Shell编程各种测试(二)
test用法
数字比较
|
-eq:equal,是否相等。 -ne:not equal,是否不相等。 -gt:greater than,是否大于。 -ge:greater equal,是否大于等于。 -lt:less than,是否小于。 -le:less equal,是否小于等于。 |
字符串比较
|
==:是否等于。字符串等值比较,使用一个=符号也是可以。 !=:是否不等于。 -z:判断字符串是否为空。 n:判断字符串是否不空。 |
文件测试
|
-a FILE或者-e FILE:判断文件是否存在。 -d FILE:文件是否存在且为目录文件。 -f FILE:文件是否存在且为普通文件(即文本文件)。 |
组合测试条件
|
即与或非。 [ EXP1 -a EXP2 ]:EXP1和EXP2必须都为true,结果才为true。 [ EXP1 -o EXP2 ]:只要EXP1和EXP2当中有一个为true,结果就为true。 [ ! EXP ]:当EXP为true的时候,结果为false;当EXP为false的时候,结果为true。 案例 [root@docker135 ~]# a=2 [root@docker135 ~]# [ $b -lt $a -o $b -lt $c ] && echo "条件成立" || echo "条件不成立" |
脚本参数
| $# | 传递到脚本的参数个数 |
| $* | 以一个单字符串显示所有向脚本传递的参数。 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 |
| $$ | 脚本运行的当前进程ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
| $- | 显示Shell使用的当前选项,与set命令功能相同。 |
| $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
脚本测试
|
# bash -n test.sh -x:追踪脚本的执行过程。 -n:类似于语法检测。(挺弱的 不太准确) |