shell测试条件,有三大类。关于文件的测试,关于字符的测试, 关于自然数的测试。通常用于判断。比如一个文件是否存在,或者是否有执行的权限。然后根据加判断的结果,再运行。shell有比较丰富的测试条件,使用这些测试条件,写脚本会更加方便,这里总结一下这些测试条件。
关于文件的测试条件
| 测试条件 |
含义 |
| -d FILE |
是否是目录 |
| -f FILE |
是否是普通文件 |
| -w FILE |
文件存在并且是否可以写 |
| -s FILE |
是否存在且非空 |
| -e FILE |
文件是否存在 |
| -r FILE |
是否有读的权限 |
| -x FILE |
是否有执行的权限 |
| -h FILE |
是否是链接文件 |
关于字符串的测试条件
| 测试条件 |
含义 |
| -n STRING |
字符串的长度非0 |
| STRING1 = STRING2 |
字符串相等 |
| -z STRING |
字符串的长度等于0 |
| STRING1 != STRING2 |
字符串不相等 |
关于自然数的判断
| 测试条件 |
含义 |
| int1 -eq int2 |
相等为真 |
| int1 -ne int2 |
不相等为真 |
| int1 -gt int2 |
int1大于int2为真 |
| int1 -lt int2 |
int1小于int2为真 |
| int1 -ge int2 |
int1大于等于int2为真 |
| int1 -le int2 |
int1小于等于int2为真 |
测试的示例
shell 测试测是可以使用 test 或者 [] (括号内部前后要有空格)
test -d /etc && echo "/etc is dir" || echo "/etc not dir"
test 1 -eq 1 && echo "1 = 1" || echo "1 != 1"
[ -e /etc/passwd ] && echo "Y" || echo "N"