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"