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}”

  1. <a name="qI3AS"></a>
  2. ### 字符测试
  3. - = 等于 则为真 (注意:这里**一个**等号)
  4. - != 不等于 则为真
  5. - -z 字符串长度为零 则为真
  6. - -n 字符串长度不为零 则为真
  7. ```bash
  8. str1="ru1noob"
  9. str2="runoob"
  10. if test $str1 = $str2
  11. then
  12. echo "str1 = str2"
  13. else
  14. echo "str1 != str2"
  15. fi

文件测试

  • -e 文件存在 则为真
  • -r 文件存在且可读 则为真
  • -w 文件存在且可写 则为真
  • -x 文件存在且可执行 则为真
  • -s 文件存在且不为空 则为真
  • -d 文件存在且为目录 则为真
  • -f 文件存在且为普通文件 则为真
  • -c 文件存在且为特殊文件 则为真
  • -b 文件存在且为块特殊文件 则为真

    1. path="/bin/bash"
    2. if test -e $path
    3. then
    4. echo "/bin/bash exist"
    5. else
    6. echo "/bin/bash not exist"
    7. fi

    逻辑操作符

  • -a 与

  • -o 或
  • ! 非
    1. if test $str1 = $str2 -o $[num1] -le $[num2]
    2. then
    3. echo "str1 = str2 或 num1 <= num2"
    4. else
    5. echo "str1 != str2 且 num1 >= num2"
    6. fi