1.Shell常用特殊变量含义解释 $# 传入Shell脚本的参数个数 $? 最后运行命令的结束码(0表示:成功执行 非0表示:执行过程中出现异常或非正常退出) 状态码: 0 命令成功结束 1 通用未知错误 2 误用shell命令 126 命令不可执行 127 没找到命令 128 无效退出参数 128+x Linux信号x的严重错误 130 Linux信号2的严重错误,即命令通过SIGINT(Ctrl+C)终止 255 退出状态码越界 $$ Shell本身的PID(即ProcessID) $! Shell最后运行的后台ProcessID $* 所有的参数列表 $@ 所有的参数列表 没看出和$*有什么区别,都是以"$1" "$2" ... "$n"的形式输出所有参数 $0 Shell本身的文件名 $- 使用Set命令设定的Flag一览 $1 - $n 添加到Shell的各个参数值,$1是第一个参数、$2是第二个参数... 2.Shell数值、字符串、文件的比较 数值比较: -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于 以上长和test命令一起使用,如: #!/bin/bash value1=8 if [$value1 -gt 6] then echo "$value1 is greater than 6" fi 字符串比较: = 等于 != 不等于 < 小于 > 大于 -n str 检查str的长度是否非0 -z str 检查str的长度是否为0 文件比较: -d file 检查file是否存在并是一个目录 -e file 检查file是否存在 -f file 检查file是否存在并是一个文件 -r file 检查file是否存在并可读 -s file 检查file是否存在并非空 -w file 检查file是否存在并可写 -x file 检查file是否存在并可执行 -O file 检查file是否存在并属当前用户所有 -G file 检查file是否存在并且默认组与当前用户相同 file1 -nt file2 检查file1是否比file2新 file1 -ot file2 检查file1是否比file2旧 3.Bash Shell提供了两项可在if - then语句中使用的高级特性 3.1 用于数学表达式的双括号 双括号命令符号: val++ 后增 val-- 后减 ++val 先增 --val 先减 ! 逻辑求反 ~ 位求反 ** 幂运算 << 左位移 >>右位移 & 位布尔和 | 位布尔或 && 逻辑和 || 逻辑或 #!/bin/bash value1=8 if (( $value1 ** 2 > 60 ))) then (( value2=$value ** 2)) echo " the square of $value1 is $value2 !" fi 3.2 用于高级字符串处理功能的双方括号 #!/bin/bash if [[ $username == bi* ]] then echo "hi $username !" else echo "$username is not existed !" fi 双方括号提供了test命令未提供的另一个特性,即模式匹配。 双等号将右边的字符串 bi* 视为一个模式,并应用模式匹配规则。上面示例表示双方括号命令$username环境变量进行匹配,看它是否以字母r开头, 如果是,执行then后代码块,否则执行else后代码块。
参考资料 《Linux命令行与shell脚本编程大全(第三版)》