根据定义,如果表达式值是 True,那么 test 返回零退出值,否则返回非零退出值(即 1)。在 清单 10 中,找到了文件 emptyfile,所以 test 返回 0;但是没有找到文件 badfilename,所以返回 1。
使用 test 的另一种方法是把要运算的表达式放在单层方括号([ ])中。使用 test 命令或把它替换为 [ ] 会返回相同的值:
# [ -f emptyfile ]
# echo $?
0
# [ -f badfilename ]
# echo $?
1
使用单层方括号([ ])还是双层方括号([[ ]])是个人习惯问题,实际上取决于您如何学习命令和 shell 脚本编程。但是请记住,这两者之间有一些差异。尽管 [ ] 和 [[ ]] 在运算期间使用相同的测试操作符,但是它们使用不同的逻辑操作符。
操作符
在 ksh(AIX 中使用的默认 shell)中,以及 Unix 和 Linux 使用的其他 shell 中,一定要知道如何使用测试、逻辑和替换操作符。
测试操作符
在编写 shell 脚本时,测试操作符对于检查错误和检查文件状态很重要。下面只是可以在 ksh 和其他标准 UNIX shell 中使用的一部分测试操作符:
-d <file>:<file> 是一个目录
-e <flle>:<file> 存在
-f <file>:<file> 是一个常规文件
-n <string>:<string> 不是 NULL
-r <file>:用户对 <file> 有读权限
-s <file>:<file> 的大小大于 0
-w <file>:用户对 <file> 有写权限
-x <file>:用户对 <file> 有执行权限
-z <string>:<string> 是 null
-L <file>:<file> 是一个符号链接
标签: