linux shell if 条件表达式总结

来源:互联网 发布:在爱奇艺网络剧工作 编辑:程序博客网 时间:2024/05/16 19:09
概述:linux shell编程中,有很多表示比较/判断的条件表达式,本文对它们做了一个简要的总结

1.字符串比较

! 取反
-n str     字符串 str 是否不为空
 -z str     字符串 str 是否为空
str1  = str2     str1是否与 str2 相同
str1 != str2     str1是否与 str2 不同

2.数值大小比较

int1 -eq int2     等于
int1 -le  int2     小于等于
int1 -ge int2     大于等于
int1 -lt   int2     小于
int1 -gt  int2     大于
int1 -ne int2     不等于

3.文件属性判断

-b     是否块文件
-c     是否字符文件
-d     是否一个目录
-e     文件是否存在
-f     是否普通文件
-g     是否设置了文件的 SGID 位
-G     文件归本组所有
-h     是否符号连接与-L相同
-k     文件是否设置了的粘贴位
-O     是否为本用户所有
-p     文件是否为一个命名管道
-r     文件是否可读
-s     文件的长度是否不为零
-S     是否为套接字文件
-t fd     fd 是否在一个终端打开
-u     是否设置了文件的 SUID 位
-w     文件是否可写
-x     文件是否可执行

4.文件关系比较

expr1 -a expr2     如果 expr1 和 expr2 为真,则为真
expr1 -o expr2     如果 expr1 或 expr2 为真,则为真

file1 -ef file2     file1和file2有同样的inode号
file1 -nt file2     file1比file2新
file1 -ot file2     file1比file2老

重要:C语言中表达式非零为真,而shell中if表达式0为true。通常情况下,我们如果要判断一个脚本是从头执行到尾部还是中途功过exit 1等这样的命令退出的话,我们通常在脚本最后加上一句“ . /bin/true”,加上这一句以后,脚本返回值将变成0.