shell
shell变量
env 查看所有环境变量
set 查看所有变量
自定义变量 a=10 echo $a unset a a= echo ${a}RMB
环境变量 USER UID HOME HOSTNAME SHELL PWD PATH PS1 (一级提示符) PS2 (二级)
位置变量与预定义变量
$1 执行脚本时后面第1个位置参数 $2 $3
$* 执行脚本时后面所有位置参数
$# 执行脚本时后面位置参数的个数
$$ 当前程序的进程号(该号码是随机的)
$? 判断上一条指令是否执行成功,0是成功,非0是失败
变量的扩展知识
“ “ 双引号 界定范围
‘ ‘ 单引号 界定范围 屏蔽特殊符号的功能
` ` 反撇号 获取命令的执行结果,还可以使用$( )实现相同效果
read -p “内容:” u //输入语句,-p是可以定义提示信息,u为变量
运算指令:1. expr命令 2. $[ ]运算,使用$(( )) 相同 3. let命令专用变量创建 4. bc命令计算器
字符串删除:
- echo ${a#*c} a变量从左往右删除到第1个c a变量echo ${a##*c} 从左往右删除到最后1个c
- echo ${a%b*} a变量从右往左删除到第1个b echo ${a%%b*} a变量从右往左删除到最后1个b
条件测试 test a == a [ a == a ] [ $a == $b ] [ “$c” == $b ](加引号空值不会报错) [ -z $a ](-z为空)
逻辑组合 && ||
数字 -eq 是否相等 -ne 是否不等 -gt 是否大于 -ge 是否大于等于 -lt 是否小于 -le 是否小于等于
文件 -e(判断文件是否存在,不关心类型) -f -d -r -w -x
正则表达式
正则符号 | 描述 |
---|---|
^ | 匹配行首 |
$ | 匹配行尾 |
[] | 集合,匹配集合中的任意单个字符 |
[^] | 对集合取反 |
. | 匹配任意单个字符 |
* | 匹配前一个字符任意次数[*不允许单独使用] |
\{n,m\} | 匹配前一个字符n到m次 |
\{n\} | 匹配前一个字符n次 |
\{n,\} | 匹配前一个字符n次及以上 |
\{\} | 保留 |
+ | 最少匹配一次 |
? | 最多匹配一次 |
{n,m} | 匹配n到m次 |
() | 组合为整体,保留 |
| | 或者 |
\b | 单词边界 |
\w | 匹配数字、字母、下划线 |
\s | 匹配空格、tab键 |
\d | 匹配数字,和[0-9]等效 |
sed 流式编辑器
可以对文档进行非交互式增删改查,逐行处理
选项: -n 屏蔽默认输出 -r 支持扩展正则 -i 修改源文件
指令: p 输出 d 删除 s 替换 a行下追加 i行上添加 c替换整行
1 | sed -n '2,4p' user //输出2~4行 |
awk
可以实现精确搜索并输出,逐行处理
选项 -F 定义分隔符
指令 print
1 | awk '{print}' abc.txt //输出所有 |