Shell 中的test命令用于检查某个条件是否成立,可以进行数值、字符、文件三方面的测试。
数值测试
- -eq 等于 则为真
- -ne 不等于 则为真
- -gt 大于 则为真
- -lt 小于 则为真
- -ge 大于等于 则为真
- -le 小于等于 则为真 ```bash num1=10 num2=20 if test $[num1] -eq $[num2] #中括号[]用的有点特别,if 外层不用,用test,变量 名用[]包裹 then echo “num1 -eq num2” else echo “num1 -ne num2” fi
代码中[]内部无空格时,执行基本的算数运算,如:
a=5 b=6 result=$[a+b] # $[无空格算数表达式],此时会求值 echo “result=${result}”
<a name="qI3AS"></a>
### 字符测试
- = 等于 则为真 (注意:这里**一个**等号)
- != 不等于 则为真
- -z 字符串长度为零 则为真
- -n 字符串长度不为零 则为真
```bash
str1="ru1noob"
str2="runoob"
if test $str1 = $str2
then
echo "str1 = str2"
else
echo "str1 != str2"
fi
文件测试
- -e 文件存在 则为真
- -r 文件存在且可读 则为真
- -w 文件存在且可写 则为真
- -x 文件存在且可执行 则为真
- -s 文件存在且不为空 则为真
- -d 文件存在且为目录 则为真
- -f 文件存在且为普通文件 则为真
- -c 文件存在且为特殊文件 则为真
-b 文件存在且为块特殊文件 则为真
path="/bin/bash"
if test -e $path
then
echo "/bin/bash exist"
else
echo "/bin/bash not exist"
fi
逻辑操作符
-a 与
- -o 或
- ! 非
if test $str1 = $str2 -o $[num1] -le $[num2]
then
echo "str1 = str2 或 num1 <= num2"
else
echo "str1 != str2 且 num1 >= num2"
fi