shell 脚本编程中会广泛使用 [ 或 test 命令判断真假。在一些系统上这两个命令的作用是相同的。为了增强可读性,当使用 [ 命令时,我们还会使用符号 ] 来结尾。在使用 [ 命令时, [ 命令和检查条件之间必须留出空格。
test 命令可以使用的条件类型:
可以使用的条件类型归为 3 类:字符串比较、算术和 文件测试
字符串比较 | 结果 |
---|---|
string1 = string2 | 如果两个字符串相同,则结果为真 |
string1 != string2 | 如果两个字符串不相同,则结果为真 |
-n string | 如果字符串不为空,则结果为真 |
-z string | 如果字符串为空,则结果为真 |
算术比较 | 结果 |
---|---|
a -eq b | 如果两个表达式相等,则结果为真 |
a -ne b | 如果两个表达式不相等,则结果为真 |
a -gt b | 如果a 大于 b ,则结果为真 |
a -ge b | 如果 a 大于等于b,则结果为真 |
a -lt b | 如果 a 小于b,则结果为真 |
a -le b | 如果a 小于等于 b,则结果为真 |
! a | 如果a 为假,则结果为真 |
文件条件测试 | 结果 |
---|---|
-d file | 如果 file 为目录,则结果为真 |
-e file | 如果file 存在,则结果为真。注意:历史上 -e 选项是不可移植的,所以通常使用 -f 选项代替。 |
-f file | 如果 file 是一个普通文件,则结果为真 |
-g file | 如果 file 的set-group-id 为被设置则结果为真 |
-r file | 如果 file 文件为可读,则结果为真 |
-s file | 如果file 大小不为0,则结果为真 |
-u file | 如果 file 的set-user-di 位被设置,则结果为真 |
-w file | 如果 file 可写,则结果为真 |
-x file | 如果 file 可执行,则结果为真 |
set-user-id: 授予程序拥有者的访问权限
set-group-id: 授予程序所在组的访问权限,
这两个特殊位是通过 chmod 命令选项 s 和 g 设置的,对 shell 脚本不起作用,只对可执行二进制文件起作用。