test

执行条件表达式。

概要

  1. test [expr]

主要用途

  • 执行条件表达式。

参数

文件操作符:

  1. -a FILE 如果文件存在,则为true
  2. -b FILE 如果文件是块特殊的,则为true
  3. -c FILE 如果文件是特殊字符,则为true
  4. -d FILE 如果文件是目录,则为true
  5. -e FILE 如果文件存在,则为true
  6. -f FILE 如果文件存在并且是常规文件,则为true
  7. -g FILE 如果文件是set-group-id,则为true
  8. -h FILE 如果文件是符号链接,则为true
  9. -L FILE 如果文件是符号链接,则为true
  10. -k FILE 如果文件的粘滞位(sticky)设置了,则为true
  11. -p FILE 如果文件是命名管道,则为true
  12. -r FILE 如果您可以读取文件,则为true
  13. -s FILE 如果文件存在且不为空,则为true
  14. -S FILE 如果文件是套接字,则为true
  15. -t FD 如果在终端上打开FD,则为True
  16. -u FILE 如果文件是set-user-id,则为true
  17. -w FILE 如果文件可写,则为true
  18. -x FILE 如果您可以执行文件,则为true
  19. -O FILE 如果文件有效地归您所有,则为true
  20. -G FILE 如果文件有效地归您的组所有,则为true
  21. -N FILE 如果文件自上次读取以来已被修改,则为true
  22. FILE1 -nt FILE2 根据修改日期,如果 file1 file2 新,则为true
  23. FILE1 -ot FILE2 根据修改日期,如果 file1 file2 旧,则为true
  24. FILE1 -ef FILE2 如果 file1 file2 的硬链接,则为true

字符串运算符:

  1. -z STRING 如果字符串为空,则为true
  2. -n STRING 如果字符串不为空,则为true
  3. STRING 如果字符串不为空,则为true
  4. STRING1 = STRING2 如果字符串相等,则为true
  5. STRING1 != STRING2 如果字符串不相等,则为true
  6. STRING1 < STRING2 如果 STRING1 的字典排序在 STRING2 之前,则为true
  7. STRING1 > STRING2 如果 STRING1 在字典排序在 STRING2 之后,则为true

其他运算符:

  1. -o OPTION 如果启用了shell选项OPTION,则为true
  2. -v VAR 如果设置了shell变量VAR,则为true
  3. -R VAR 如果设置了shell变量VAR并且是变量引用,则为true
  4. EXPR 如果expr为假,则为true
  5. EXPR1 -a EXPR2 如果expr1expr2都为true,则为true
  6. EXPR1 -o EXPR2 如果expr1expr2true,则为true
  7. arg1 OP arg2 算术表达式测试; OP -eq,-ne,-lt,-le,-gt,-ge 中的一个;算术表达式为真时返回true

返回值

如果表达式执行结果为成功时返回0,当表达式执行结果为失败或给出非法参数时返回1。

例子

  1. # 执行条件表达式并显示返回值。
  2. [root@pc root]$ test ! "abc" == 123; echo $?
  3. 0
  4. # 等价形式,注意:方括号 [ 后面的空格以及方括号 ] 前面的空格。
  5. [root@pc root]$ [ ! "abc" == 123 ]; echo $?
  6. 0
  7. [root@pc root]$ [[ ! "abc" == 123 ]]; echo $?
  8. 0

注意

  1. 该命令等价于 [
  2. 编写 bash 条件表达式可用内建命令 test[ ,组合命令 [[
    • 关于条件表达式可以查看这里
    • 关于内建命令的索引可以查看这里
    • 关于组合命令的索引可以查看这里
  3. 该命令是bash内建命令,相关的帮助信息请查看help命令。