条件判断式
1,按照文件类型进程判断
测试选项 |
作用 |
-b 文件 |
判断改文件是否存在,并且是否为块设备文件(是块设备文件为真) |
-c 文件 |
判断改文件是否存在,并且是否为字符设备文件(是则真) |
(常用)-d 文件 |
判断改文件是否存在,并且是否为目录文件(是则真) |
(常用)-e 文件 |
判断改文件是否存在(存在为真) |
(常用)-f 文件 |
判断改文件是否存在,并且是否为普通文件(是则真) |
-L 文件 |
判断改文件是否存在,并且是否为符号链接文件(是则真) |
-p 文件 |
判断改文件是否存在,并且是否为管道文件(是则真) |
-s文件 |
判断改文件是否存在,并且是否为空(是则真) |
-S 文件 |
判断改文件是否存在,并且是否为套接字文件(是则真) |
2,按照文件权限进行判断
测试选项 |
作用 |
(常用)-r 文件 |
判断改文件是否存在,并且是否该文件拥有读权限(有则真) |
(常用)-w 文件 |
判断改文件是否存在,并且是否该文件拥有写权限(有则真) |
(常用)-x 文件 |
判断改文件是否存在,并且是否该文件拥有执行权限(有则真) |
-u 文件 |
判断改文件是否存在,并且是否该文件拥有SUID权限(有则真) |
-g 文件 |
判断改文件是否存在,并且是否该文件拥有SGID权限(有则真) |
-k 文件 |
判断改文件是否存在,并且是否该文件拥有SBit权限(有则真) |
3,两个文件之间进行比较
测试选项 |
作用 |
文件a -nt 文件b |
判断文件a的修改时间是否比文件b的新(如果新则为真) |
文件a -ot 文件b |
判断文件a的修改时间是否比文件b的旧(如果旧则为真) |
文件a -ef 文件b |
判断文件a是否和文件b的Inode号一致,可以理解两个文件是否为同一个文件。这个用于判断硬链接是很好的方法 |
- ps:软链接,删除原本|,软链接也删除。硬链接,两个文件Inode号一致
4,两个整数之间比较
测试选项 |
作用 |
整数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(小于等于为真) |
5,字符串的判断
测试选项 |
作用 |
-z 字符串 |
判断字符串是否为空(为空返回真) |
-n 字符串 |
判断字符串是否为非空(非空返回真) |
字符串a == 字符串b |
判断字符串a是否和字符串b相等 (相等返回真) |
字符串a !=字符串b |
判断字符串a是否和字符串b不相等(不相等返回真) |
6,多重条件判断
测试选项 |
作用 |
判断a -a 判断b |
逻辑与,判断a和判断b都成立,最终的结果才为真 |
判断a -o 判断b |
逻辑或,判断a和判断b有一个成立,最终的结果就为真 |
!判断 |
逻辑非,使原始的判断式取反 |
7,两种判断格式
test 参数 文件路径 文件判断
[ 参数 文件路径 ] 文件判断
[ 整数a 参数 整数b ] 两数之间判断
[ 参数 “$变量名” ] 判断字符串
Ps: [ -d /root ] && echo "yes" || echo "no"
&& 左边为真则执行右边
|| 左边为否则执行右边
[ ]括号要留空,任何数,变量,不能紧贴括号
$变量名 代表值 变量名 代表变量