电脑技术学习

对话 UNIX: !$#@*%

dn001

  根据定义,如果表达式值是 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> 是一个符号链接

标签: