按照文件类型进行判断

黄色为常用选项

测试选项 作用
-b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备为真)—输入命令 echo $? : 真显示0,假显示1
-c 文件 判断该文件是否存在,并且是否为字符设备文件(是字符设备为真)
-d 文件 判断该文件是否存在,并且是否为目录文件(是目录为真)
-e 文件 判断该文件是否存在(存在为真)
-f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真)
-L 文件 判断该文件是否存在,并且是否为符号链接文件(是则为真)
-p 文件 判断该文件是否存在,并且是否为管道文件(是则为真)
-s 文件 判断该文件是否存在,并且是否为非空(是则为真)
-S 文件 判断该文件是否存在,并且是否为套接字文件(是则为真)


两种判断格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ root@localhost ~ ] $ test -e /root/install.log
# 判断instll.log文件是否存在

[ root@localhost ~ ] $ echo $?
# 输出上条命令持行结果,为1则为假,0为真

[ root@localhost ~ ] $ [ -e /root/install.log ]
# 判断instll.log文件是否存在,注意括号两边空格不能省略

[ root@localhost ~ ] $ echo $?
# 输出上条命令持行结果,为1则为假,0为真

[ root@localhost ~ ] $ [ -d /root ] && echo "yes" || echo "no"
# 第一个判断命令如果正确执行,则打印 yes。否则打印输出 no


按照文件权限进行判断

黄色为常用选项

测试选项 作用
-r 文件 判断该文件是否存在,并且是否该文件具有读权限 (有则为真)
-w 文件 判断该文件是否存在,并且是否该文件具有写权限 (有则为真)
-x 文件 判断该文件是否存在,并且是否该文件具有执行权限 (有则为真)
-u 文件 判断该文件是否存在,并且是否该文件具有SUID权限 (有则为真)
-g 文件 判断该文件是否存在,并且是否该文件具有SGID权限 (有则为真)
-k 文件 判断该文件是否存在,并且是否该文件具有SBit权限 (有则为真)

按照文件权限进行判断

测试选项 作用
文件1 -nt 文件2 (new than) 判断文件1的修改时间是否比文件2的新 (如果新则为真)
文件1 -ot 文件2 (old than) 判断文件1的修改时间是否比文件2的旧 (如果旧则为真)
文件1 -ef 文件2 判断文件1是否和文件2的inode(节点)号一致,可理解为两个文件是否为同一文件。可以判断硬链接


两个整数之间的比较

测试选项 作用
整数1 -eq 整数2 判断整数1是否与整数2相等 (相等则为真) –equivalence:相等的
整数1 -ne 整数2 判断整数1是否与整数2不相等 (不相等位置) –no equivalence:不相等的
整数1 -gt 整数2 判断整数1是否大于整数2 (大于则为真) –greater than:大于
整数1 -lt 整数2 判断整数1是否小于整数2 (小于位置) –less than:相等的
整数1 -ge 整数2 判断整数1是否大于等于整数2 (大于等于则为真 ) –greater than or equal:大于等于
整数1 -le 整数2 判断整数1是否小于等于整数2 (小于等于则为真 ) –less than or equal:大于等于


字符串的判断

测试选项 作用
-z 字符串 判断字符串是否为空(为空则返回真)
-n 字符串 判断字符串是否为非空(为非空则返回真)
字符串1 == 字符串2 判断字符串1是否和字符串2相等(相等则返回真)
字符串1 != 字符串2 判断字符串1是否和字符串2不相等(不相等则返回真)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[ root@localhost ~ ] $ name=sc

// 给name变量赋值

[ root@localhost ~ ] $ [ -Z "$name" ] && echo "yes" || echo "no"
得:no

# 判断name变量是否为空,因为不是空,所有返回no
[ root@localhost ~ ] $ aa=11

[ root@localhost ~ ] $ bb=22
# 给变量aa与变量bb赋值

[ root@localhost ~ ] $ [ "$aa" == "$bb" ] && echo "yes" || echo "no"
得:no
# 判断两个变量值是否相等,因为不相等,所有返回no


多重条件判断

测试选项 作用
判断1 -a 判断2 代表逻辑与;判断1和判断2都成立,最终的结果为真
判断1 -o 判断2 代表逻辑或;判断1和判断2有一个成立,最终的结果为真
!判断 代表逻辑非;是原始的判断式取反

示例:

1
2
3
4
5
6
7
[ root@localhost ~ ] $ aa=11
# 给aa变量赋值

[ root@localhost ~ ] $ [ -n "$aa" -a "$aa" gt ] && echo "yes" || echo "no
得:no
# 判断变量aa值是否有值,同时判断变量aa的值是否大于23
# 因为变量aa的值不大于23,所以第一个判断值为真,则但返回的结果为假