1. test 条件表达式
  2. [ 条件表达式 ] [:这是一个命令,所以后面参数需要空格,]:是[这个命令必须的参数
  3. [[ 条件表达式 ]]
  4. test 条件表达式 [ 条件表达式 ] 两个功能是一模一样的
  5. man test 查看帮助信息

1、文件测试

  1. #0:true 1:false
  2. [ -d /root/ ] ;echo $? 是否是目录,目录返回true
  3. [ -f /root/admin-openrc.sh ] ;echo $? 是否是普通文件,是普通文件返回true -b 块设备 -c 字符设备 -S:socket -L:符号链接
  4. [ -r /root/admin-openrc.s ] ;echo $? 文件或目录是否可读,可读返回true
  5. [ -w /root/admin-openrc.s ] ;echo $? 文件或目录是否可写,可写返回true
  6. [ -x /root/admin-openrc.s ] ;echo $? 文件或目录是否可执行,可执行返回true
  7. [ -s /root/test.txt ] ;echo $? 文件是否为空 ,不为空返回true
  8. [ -e /root/test.txt/ ] ;echo $? 文件或目录是否存在,存在返回true
  9. 其他检查符:
  10. -S: 判断某文件是否 socket
  11. -L: 检测文件是否存在并且是一个符号链接。

2、字符串测试

  1. #字符串运算 尽量都用引号引起来,避免不必要的错误
  2. #str=abc
  3. [ "$str" = "abc" ] ;echo $? 字符串相等
  4. [ "$str" != "abc" ] ;echo $? 字符串不相等
  5. [ -z "$str" ] ;echo $? 长度为0
  6. [ -n "$str" ] ;echo $? 长度不为0,
  7. [ $str ] ;echo $? 不为空,返回true str为空或不存在都返回false

3、数字测试

  1. [ 1 -eq 1 ];echo $? 相等
  2. [ 1 -ne 1 ];echo $? 不等
  3. [ 1 -gt 1 ];echo $? 大于
  4. [ 1 -ge 1 ];echo $? 大于等于
  5. [ 1 -lt 1 ];echo $? 小于
  6. [ 1 -le 1 ];echo $? 小于等于
  7. 注:变量尽量用引号引起来,防止不存在出现错误

4、逻辑测试

|| 或 -o 或运算
&& 或 -a 与运算
! 非运算

  1. [ 0 -eq 1 -o 1 -eq 1 ];echo $? # 0 -o 或运算
  2. [ 0 -eq 1 -a 1 -eq 1 ];echo $? # 1 -a 与运算
  3. [ ! $n -ge 1 ];echo $? ! 非运算
  4. 注:[[]]支持正则: [[ 123a =~ ^[0-9]+$ ]] ; echo $?
  5. [[ 0 -eq 1 && 1 -eq 1 ]];echo $?
  6. [[ 0 -eq 1 || 1 -eq 1 ]];echo $?

5、注意事项

  • 变量尽量用引号引起来,防止不存在出现错误
  • [ ] 、操作数和运算符之间都需要空格
  • [[ ]]支持正则: [[ 123a =~ ^[0-9]+$ ]] ; echo $?