Linux Shell编程-条件判断

1 按照文件类型进行判断
-b 文件:判断该文件是否存在,并且是否为块设备文件(是块设备文件为真)
-c 文件:判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真)
-d 文件:判断该文件是否存在,并且是否为目录文件(是目录文件为真)
-e 文件:判断该文件是否为真(存在为真)
-f 文件:判断该文件是否存在,并且是否为普通文件(是普通文件为真)
-L 文件:判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
-p 文件:判断该文件是否存在,并且是否为管道文件(是管道文件为真)
-s 文件:判断该文件是否存在,并且是否为非空(为非空是真)
-S 文件:判断该文件是否存在,并且是否为套接字文件(是套接字文件为真)

两种判断格式
test -e /root/install.log
[ -e /root/install.log ]
Linux Shell编程-条件判断
我们知道$?可以判断上一个命令是否正确执行,0是正确执行,非0是错误执行
但是这样太麻烦,我们可以用另外一种方法
Linux Shell编程-条件判断
如果是真,输出yes,如果非真,输出no

2 按照文件权限进行判断
-r 文件:判断该文件是否存在,并且是否该文件具体读权限(有读权限为真)
-w 文件:判断该文件是否存在,并且是否该文件具有写权限(有写权限为真)
-x 文件:判断该文件是否存在,并且是否该文件具有执行权限(有执行权限为真)
-u 文件:判断该文件是否存在,并且是否该文件具有SUID权限(有SUID权限为真)
-g 文件:判断该文件是否存在,并且是否该文件具有SGID权限(有SGID权限为真)
-k 文件:判断该文件是否存在,并且是否该文件具有SBit权限(有SBit权限为真)

Linux Shell编程-条件判断
注意,这里判断有什么权限只要文件拥有者,所属组和其他人,任何一个有相应的权限,就算有

3 两个文件之间进行比较
文件1 -nt 文件2:判断文件1的修改时间是否比文件2新(如果新则为真)
文件1 -ot 文件2:判断文件1的修改时间是否比文件2旧(如果旧则为真)
文件1 -et 文件2:判断文件1是否和文件2的Inode号一致,可以理解为两个文件是否为同一个文件,这个判断用于判断硬链接是很好的方法
Linux Shell编程-条件判断

4 两个整数之间的比较
整数1 -eq 整数2:判断整数1是否和整数2相等(相等为真)
整数1 -ne 整数2:判断整数1是否和整数2不相等(不相等为真)
整数1 -gt 整数2:判断整数1是否大于整数2(大于为真)
整数1 -lt 整数2:判断整数1是否小于整数2(小于为真)
整数1 -ge 整数2:判断整数1是否大于等于整数2(大于等于为真)
整数1 -le 整数2:判断整数1是否小于等于整数2(小于等于为真)

Linux Shell编程-条件判断

5 字符串的判断
-z 字符串:判断字符串是否为空(为空返回真)
-n 字符串:判断字符串是否为非空(非空返回真)
字符串1==字符串2:判断字符串1和字符串2是否相等(相等返回真)
字符串1!=字符串2:判断字符串1和字符串2是否不等(不等返回真)

Linux Shell编程-条件判断

Linux Shell编程-条件判断

6 多重判断条件
判断1 -a 判断2 :逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2:逻辑或,判断1和判断2有一个成立,最终的结果就为真
! 判断:逻辑非,使原始的判断式取反

Linux Shell编程-条件判断

好了,Linux Shell编程-条件判断就总结到这里,如有问题,欢迎指正,谢谢。

相关推荐