Linux Shell if条件判断

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]多个条件的判断

你可能感兴趣的:(Linux Shell if条件判断)