shell编程—条件表达式

1、字符串操作符比较

常用字符串测试操作符 说明
-z “字符串” 若串长度为0则真,-z可以理解为zero
-n “字符串” 若串长度不为0则真,-n可以理解成no zero
“串 1” = “串2” 若串1等于串2则真,可使用“==” 代替“=“
“串 1” != “串2” 若串1不等于串2则真,可使用“!==” 代替“!=“

注意:

①、以上表格中的字符串测试操作符好务必使用”“引起来(字符串或字符串变量比较都要加双引号之后再比较)

②、比较符号两端有空格(字符串或字符串变量比较,比较符号两端最好有空格)

代码示例:

1
2
3
# 字符串比较
[root@docker-02 ~]# [ -z "abc" ] && echo 1 || echo 0
0

2、整数二元比较操作符

在[]以及test中使用的比较符 在(())和[[]]中使用的比较符 说明
-eq == 或 = equal 的缩写,相等
-ne != not equal 的缩写,不相等
-gt > 大于 greater than
-ge >= 大于等于 greater equal
-lt < 小于 类似 less than
-le <= 小于等于 less equal

代码示例:

1
2
3
4
5
6
7
8
9
#
[root@docker-02 ~]# [ 2 -eq 1 ] && echo 1 || echo 0
0
#
[root@docker-02 ~]# [ 2 -eq 2 ] && echo 1 || echo 0
1
#
[root@docker-02 ~]# ((2>3)) && echo 1 || echo 0
0

小结:整数比较笔者推荐下面用法

①、[ $num1 -eq $num2 ] # 注意空格,和比较符号

②、(($num1>$num2)) # 无需空格,常规数学比较符号

3、逻辑连接符

在[]和test中使用的逻辑操作符 在[[]]中使用的逻辑操作符 说明
-a && and与,两端都为真,则真
-o or或,两端有一个为真则真
! ! not非,相反则为真

代码示例:

1
2
3
4
5
#
a=1
b=2
[root@docker-02 ~]# [ $a -eq 1 -a $b -eq 2 ] && echo 1 || echo 0
1

小结:
①、-a 和 && 的运算规则:只有两端都是1才是真

②、[] 中用-a、-o、!

③、[[]] 中用&&、||、!