linux
的shell
中存在一組測試命令,該組命令用於測試某種條件或某幾種條件是否真實存在。測試命令是判斷語句和迴圈語句中條件測試工具,所以,其對於編寫
shell
非常重要。
測試命令用於測試表示式的條件的真假。如果測試的條件為真,則返回乙個
0值;如果測試條件為假,將返回乙個非
0整數值。
測試命令有兩種結構,一種是用
test
命令進行測試,結構如下:
testexpression
其中,條件
expression
是乙個表示式,該表示式可為數字、字串、文字和檔案屬性的比較,同時可同時加入各種算術、字串、文字等運算子。
為了提高命令的可讀性,經常使用第二種格式:
[ expression ]
其中「[」是啟動測試命令,但要求在
expression
後要有乙個「
]」與其配對。使用該命令要特別注意「
[」後和「
]」前的空格必不可少。第二種格式常用。
格式:test
「num1」
整數比較運算子
「num2」
或者[「
num1
」整數比較運算子
「num2」
] 整數比較運算子不可用於字串、檔案操作,同樣字串操作也不可用於其他的操作,若誤用,將產生不必要的錯誤。
整數比較運算子
整數比較運算子
描述num1 –eqnum2
如果num1
等於num2
,測試結果為0
num1 –ge num2
如果num1
大於或等於
num2
,測試結果為0
num1 –gt num2
如果num1
大於num2
,測試結果為0
num1 –lenum2
如果num1
小於或等於
num2
,測試結果為0
num1 –ltnum2
如果num1
小於num2
,測試結果為0
num1 –ne num2
如果num1
不等於num2
,測試結果為0
例子:#num1=13
#[ 「$num1」 –eq 13 ]#
測試num1
是否等於13
#echo $? 0#
退出狀態為
0,表示
num1
等於13
;反之,退出狀態為非0.
注:整數比較運算子不適用於浮點型數值比較。
該組字串可以用來測試字串是否為空、兩個字串是否相等,常用於測試使用者輸入的是否為空或比較字串變數
字串運算子
字串運算子
描述string
測試字串
string
是否不為空
-n string
測試字串
string
是否不為空
-z string
測試字串
string
是否為空
string1=string2
測試字串
string1
是否與字串
string2
相同string1!=string2
測試字串
string1
是否與字串
string2
不相同對於第一種格式,只是用
string
進行測試時要特別注意該方式只有一種格式:
test string
不存在另一種格式。字串比較時建議字串變數要使用雙引號,即使變數為空,也要使用雙引號。
例子:#str1=」」
#test 「$str1」
#echo $? 1
#退出狀態為
1,說明字串為空
注:在給字串變數賦值時,要注意空格對字串比較的影響。
在linux shell
中,字串賦值和整數賦值沒有區別,有時候會出現些許問題
以下這個例子要引起注意:
#var=」007」#
給變數賦值,可以當做整數,也可以當做字串
#[ 「var」 = 」7」 ]#
測試變數
var的值是否等於字串7
#echo $?1
#[ 「$var」 –eq」7」 ]#
測試變數為
var的值是否等於整數7
#echo $? 0
格式:test
檔案操作符
file 或者
[檔案操作符
file ] 其中
file
為檔名、目錄名或者檔案路徑等。
檔案操作符
檔案運算子
描述-d file
測試file
是否為目錄
-e file
測試file
是否存在
-f file
測試file
是否為普通檔案
-r file
測試file
是否是程序可讀檔案
-s file
測試file
的長度是否不為0
-w file
測試file
是否是程序可寫檔案
-x file
測試file
是否是程序可執行檔案
-l file
測試file
是否為符號化鏈結
例子:#[ -e file_exam ]#
測試file_exam
是否存在
注:在以後的
linux shell
程式設計過程中,都會用到很多這樣的例子,如建立檔案後測試檔案是否建立成功,刪除檔案後判斷檔案是否刪除成功。當然,也可以通過檢視退出狀態,檢視檔案是否成功建立或者成功刪除。
linux shell
程式設計中還有其他的測試操作符,和上面提到的整數比較運算子、字串運算子和檔案操作符結合使用,進而組合成複雜的測試用於判斷或迴圈語句中。
邏輯運算子用於測試多個條件是否為真或為假,或使用邏輯非測試單個表示式,這些運算子在
shell
程式設計中經常用到,這些條件一般和測試命令聯用。
邏輯操作符
邏輯操作
描述!expression
如果expression
為假,則測試結果為真
expression1 –a expression2
如果expression1
和expression2
同時為真,則測試結果為真
expression1 –o expression2
如果expression1
和expression2
有乙個為真,則測試結果為真
其中expression
為表示式,該表示式描述了乙個測試條件。在邏輯運算子表示式中並不是所有的運算子都會被執行。
例:expr1 –a expr2 –a expr3
只有當expr1
為真時,才會測試
expr2
,依次。邏輯或運算子類似。
例:[ -e file_exam –a –x file_exam ]
[ 「$integer1」 –lt 20 –o 「integer1」 –gt 30 ]
注:當邏輯非運算子和表示式之間要有空格。
linux 條件測試
測試命令 1,test expression 2,expression 3,expression 測試結果 echo 0 為true 1 false 數值測試 gt 大於 ge 大於等於 eq 等於 ne 不等於 lt 小於 le 小於等於 字串測試 用於字串比較時 用到的運算元都應該用引號 是否等...
Shell 中的條件測試
shell提供了兩種形式的條件測試 test 和 都是shell的內建型別 root localhost shell type test test is a shell builtin root localhost shell type is a shell builtin root localho...
Shell中的條件測試語句
shell有條件測試語句,一般用test命令或是命令來完成,它們是條件判斷語句if then語句的基礎,特別是命令。下面我們講解一些條件測試語句。對於檢測系統中某些檔案是否存在,或者相關屬性時,test命令很好用。其基本語法如下 test命令還可以測試字串 test命令還可以測試整數之間的關係 使用...