一、條件測試語法:
- test 測試內容
- [ 測試內容 ] ##注意中括號與測試內容間有空格
- [[ 測試內容 ]]
- (( 測試內容 )) ##只能用於測試數值大小,後面詳解
前三種測試語法基本等同。
二、數值測試:
2.1 常見的數值測試:
- int1 -eq int2 如果int1 等於int2,則返回真
- int1 -ne int2 如果int1 不等於int2,則返回真
- int1 -lt int2 如果int1 小於int2,則返回真
- int1 -gt int2 如果int1 大於int2,則返回真
- int1 -le int2 如果int1 小於等於int2,則返回真
- int1 -ge int2 如果int1 大於等於int2,則返回真
2.2 在(( ))中測試
- < 小於(在雙括號裡使用) (("int1" < "int2")) 等同於 [ int1 -lt int2 ]
[root@server1 ~]# (( "2" < "3" ))
[root@server1 ~]# echo $?
0
[root@server1 ~]# [ 1 -lt 3 ]
[root@server1 ~]# echo $?
0
- <= 小於等於 (在雙括號裡使用) (("int1" <= "int2")) 等同於 [ int1 -ne int2 ]
- > 大於 (在雙括號裡使用) (("int1" > "int2")) 等同於 [ int1 -gt int2 ]
- >= 大於等於(在雙括號裡使用) (("int1" >= "int2")) 等同於 [ int1 -ge int2 ]
注意:雙括號測試不能測試數值相等的情況,使用雙括號測試等於是會報如下錯誤:
[root@server1 ~]# (( "2" = "3" ))
-bash: ((: 2 = 3 : attempted assignment to non-variable (error token is "= 3 ")
3、測試字符串:
- -z string 字符串string 為空串(長度為0)時返回真
- -n string 字符串string 為非空串時返回真
- str1 = str2 字符串str1 和字符串str2 相等時返回真
- str1 == str2 同 =
- str1 != str2 字符串str1 和字符串str2 不相等時返回真
- str1 < str2 按字典順序排序,字符串str1 在字符串str2 之前,一般不會用到
- str1 > str2 按字典順序排序,字符串str1 在字符串str2 之後,一般不會用到
測試示例:
[root@server1 ~]# A=str
[root@server1 ~]# B=str
[root@server1 ~]# [ $A = $B ]
[root@server1 ~]# echo $?
0
[root@server1 ~]# B=Str
[root@server1 ~]# [ $A = $B ]
[root@server1 ~]# echo $?
1
[root@server1 ~]# [ -n $B ]
[root@server1 ~]# echo $?
0
[root@server1 ~]# [ -z $B ]
[root@server1 ~]# echo $?
1