在shell脚本中常用到判断,测试等,test指令用于测试表达式的真假,然而脚本中常用的是与test等价的[]
1.整数比较
#两个整数之间常用的比较运算有: n1 -eq n2 #如果n1等于n2则测试结果为0;同样理解为判断两个整数是否相等,若相等则为真,否者为假 n1 -ge n2 #若n1大于等于n2,测试结果为0 n1 -gt n2 #若n1大于n2,则测试结果为0 n1 -le n2 #若n1小于等于n2则测试结果为0 n1 -lt n2 #若n1小于n2则测试结果为0 n1 -ne n2 #若n1不等于n2 测试结果为0
[root@zhu1 shell]# [ 5 -eq 8 ] && echo "zhu" [root@zhu1 shell]# [ 5 -ge 8 ] && echo "zhu" [root@zhu1 shell]# [ 5 -gt 8 ] && echo "zhu" [root@zhu1 shell]# [ 5 -le 8 ] && echo "zhu" zhu [root@zhu1 shell]# [ 5 -lt 8 ] && echo "zhu" zhu [root@zhu1 shell]# [ 5 -ne 8 ] && echo "zhu" zhu [root@zhu1 shell
2.字符串比较运算符
-n string #测试字符串string是否不为空, -z string #测试字符串是否为空 string1 = string2 #测试字符串string1是否等于字符串string2 string1 != string2 #测试字符串string1是否不等于字符串string2
[root@zhu1 shell]# name="" #变量name等于空字符串 [root@zhu1 shell]# [ -n "$name" ];echo $? #不为空时为真 1 [root@zhu1 shell]# [ -z "$name" ];echo $? #为空时为真 0 [root@zhu1 shell]# [ "$name" = "" ];echo $? #相等时为真 0 [root@zhu1 shell]# [ "$name" != "" ];echo $? #不相等时为真 1
3.文件比较运算符
-d file #测试file是否为目录 -e file #测试file是否存在 -f file #测试file是否为普通文件 -r file #测试file是否具有可读权限 -w file #测试file是否具有可写权限 -x file #测试file是否具有可执行权限 -s file #测试文件的长度是否不为0
[root@zhu1 shell]# ll zhu -rw-r--r-- 1 root root 4 11-02 05:28 zhu [root@zhu1 shell]# [ -f /root/shell/zhu ];echo $? 0 [root@zhu1 shell]# [ -s /root/shell/zhu ];echo $? 0 [root@zhu1 shell]# [ -e /root/shell/zhu ];echo $? 0 [root@zhu1 shell]# [ -d /root/shell/zhu ];echo $? 1 [root@zhu1 shell]# [ -r /root/shell/zhu ];echo $? 0 [root@zhu1 shell]# [ -w /root/shell/zhu ];echo $? 0 [root@zhu1 shell]# [ -x /root/shell/zhu ];echo $? 1
4.逻辑运算符
!expression #如果表达式为假,则测试结果为真 expression1 -a expression2 #两个表达式同时为真才为真 expression1 -o expression2 #两个表达式只要有一个为真,测试结果便为真
[root@zhu1 shell]# [ 3 -gt 2 -a 66 -lt 77 ];echo $? 0 [root@zhu1 shell]# [ 3 -gt 22 -a 66 -lt 77 ];echo $? 1 [root@zhu1 shell]# [ 3 -gt 22 -o 66 -lt 77 ];echo $? 0
转载于:https://blog.51cto.com/zhujiangtao/1322656