Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> shell編程之條件測試

shell編程之條件測試

日期:2017/2/7 14:40:41      編輯:Linux教程
 

一、條件測試語法:

  • 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

Copyright © Windows教程網 All Rights Reserved