在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