shell条件判断

按照文件类型进行判断
判断符 说明 备注
-b 判断文件是否存在,且是否为块设备文件
-c 判断文件是否存在,且是否为字符设备块文件
-d 判断文件是否存在,且是否为目录文件
-e 判断文件是否存在,存在为真
-f 判断文件是否存在,且是否为普通文件
-L 判断文件是否存在,且是否为软连接文件
-p 判断文件是否存在,且是否为管道文件
-s 判断文件是否存在,且是否为非空
-S 判断文件是否存在,且是否为套接字文件

按照文件类型进行判断
-r 判断文件是否存在,且有 r 权限
-w 判断文件是否存在,且有 w 权限
-x 判断文件是否存在,且有 x 权限
-u 判断文件是否存在,且有 SUID 权限
-g 判断文件是否存在,且有 SGID 权限
-k 判断文件是否存在,且有 SBIT 权限

两个文件之间进行比较
a -nt b 判断 a 文件的修改是否比 b 文件新
a -ot b 判断 a 文件的修改是否比 b 文件旧
a -ef b 判断 a 文件和 b 文件的 Inode 号是否一样

字符串的判断
-z 判断字符串(变量)是否为空
-n 判断字符串(变量)是否为非空
a == b 判断字符串 a 和 b 是否相等
a != b 判断字符串 a 和 b 是否不相等相等,[ "$a" = "$b" ]
a < b 符号两侧空格可有可无,[[ "$a" < "$b" ]]
a<=b 符号两侧不能有空格,[[ "$a"<="$b" ]]
a =~ b 符号两侧必须有空格,[[ "$a" =~ "$b" ]],a 包含于 b

两个整数之间进行比较
[ a -eq b ] a=b
[ a -ne b ] a!=b
[ a -gt b ] a>b
[ a -lt b ] a<b
[ a -ge b ] a>=b
[ a -le b ] a<=b

多重条件判断
判断 1 -a 判断 2 逻辑与,判断 1 和判断 2,都成立为真
判断 1 -o 判断 2 逻辑或,判断 1 和判断 2,有一个成立为真
! 判断 逻辑非,取反原判断式, [ ! 2 -eq 3 ]


作者:Outsrkem
出处:https://www.cnblogs.com/outsrkem/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/outsrkem/p/11190675.html