1 语法格式
可以使用test或者[来进行[条件判断,下面的两个代码片段是等价的:
if test -f file.c then .... fi或者
if [ -f file.c ] then ... fi上述代码片段的意义为:file.c是普通文件则执行then与fi之间的代码,可取反为:
if [ ! -f file.c ] then ... fi
上述代码的意义是:如果file.不是普通文件则执行then与fi之间的代码。
多个条件判断时候,要用多个[]对,不能将所有条件都放在一对[]中[3]:
if [ -f file.c ] && [ ! -L file.c ] then ... fi
2 字符串比较
根据参考资料[1]P28,总结字符串比较测试如下:
string1 = string2 —— 如果两个字符串相同则结果为真
string1 != string2 —— 如果两个字符串结果不同则结果为真
-n string —— 如果字符串不为空则结果为真
-z string —— 如果字符串为空(null)则结果为真
3 算术比较
根据参考资料[1]P28,总结算术比较测试如下:
expresion1 -eq expression2 —— 如果两个表达式结果相等则结果为真
expresion1 -ne expression2 —— 如果两个表达式结果不相等则结果为真
expresion1 -gt expression2 —— 如果expression1大于expression2则结果为真
expresion1 -ge expression2 —— 如果expression1大等于expression2则结果为真
expresion1 -lt expression2 —— 如果expression1 小于expression2则结果为真
expresion1 -le expression2 —— 如果expression1小等于expression2则结果为真
! expression
4 文件条件测试
根据参考资料[1]P28和参考资料[2],总结文件条件测试如下:
-d file —— 如果文件是一个目录则结果为真
-e file —— 如果文件存在则结果为真
-f file —— 如果文件是一个普通文件(包括软连接文件)则结果为真
-g file —— 如果文件的set-group-id位被设置则结果为真
-L file —— 如果文件为软连接则结果为真
-r file —— 如果文件可读则结果为真
-s file —— 如果文件的大小不为0则结果为真
-u file —— 如果文件的set-user-id位被设置则结果为真
-w file —— 如果文件可写则结果为真
-x file —— 如果文件可执行则结果为真
参考资料
[1]Nei Matthew著. Linux程序设计.第4版.陈建等译. 北京:人民邮电出版社,2014
[2]linux->shell-> if 条件判断,关于软连接的判断!
[3]多个条件的判断