按照测试对象来划分,条件测试语句可以分为4种:
1 文件测试语句;
2 逻辑测试语句;
3 整数值比较语句;
4 字符串比较语句。
文件测试所用的参数
操作符 作用
-d 测试文件是否为目录类型
-e 测试文件是否存在
-f 判断是否为一般文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
例:
[root@linuxprobe ~]# [ -d /etc/fstab ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# [ -f /etc/fstab ]
[root@linuxprobe ~]# echo $?
0
&&是逻辑“与”,只有当前面的语句执行成功的时候才会执行后面的语句。
||是逻辑“或”,只有当前面的语句执行失败的时候才会执行后面的语句。
!是逻辑“非”,代表对逻辑测试结果取反值;之前若为正确则变成错误,若为错误则变成正确。
例:
[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo “Exist”
Exist
[root@linuxprobe ~]# echo $USER
root
[root@linuxprobe ~]# [ $USER = root ] || echo “user”
[root@linuxprobe ~]# su - linuxprobe
[linuxprobe@linuxprobe ~]$ [ $USER = root ] || echo “user”
user
[root@linuxprobe ~]# [ ! $USER = root ] || echo “administrator”
administrator
[root@linuxprobe ~]# [ ! $USER = root ] && echo “user” || echo “root”
root
可用的整数比较运算符
操作符 作用
-eq 是否等于
-ne 是否不等于
-gt 是否大于
-lt 是否小于
-le 是否等于或小于
-ge 是否大于或等于
例:
[root@linuxprobe ~]# [ 10 -gt 10 ]
[root@linuxprobe ~]# echo $?
1
[root@linuxprobe ~]# [ 10 -eq 10 ]
[root@linuxprobe ~]# echo $?
0
[root@linuxprobe ~]# free -m
total used free shared buff/cache available
Mem: 1966 1374 128 16 463 397
Swap: 2047 66 1981
[root@linuxprobe ~]# free -m | grep Mem:
Mem: 1966 1374 128 16 463 397
[root@linuxprobe ~]# free -m | grep Mem: | awk ‘{print $4}’
128
[root@linuxprobe ~]# FreeMem=free -m | grep Mem: | awk '{print $4}'
[root@linuxprobe ~]# echo $FreeMem
128
[root@linuxprobe ~]# [ $FreeMem -lt 1024 ] && echo “Insufficient Memory”
Insufficient Memory
常见的字符串比较运算符
操作符 作用
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空
例:
[root@linuxprobe ~]# echo $LANG
en_US.UTF-8
[root@linuxprobe ~]# [ ! $LANG = “en.US” ] && echo “Not en.US”
Not en.US
评论区