if-then語句不能測試命令退出狀態碼以外的條件,test命令提供了在if-then語句中測試不一樣條件的途徑。shell
格式:express
1 test condition
condition是test命令要測試的一系列參數和值。當用在if-then語句中時,test命令以下兩種表示方法:bash
第一種:測試
1 if test condition 2 then
3 command 4 fi
第二種:spa
1 if [condition] 2 then 3 command 4 fi
參數 | 說明 |
---|---|
-eq | 等於則爲真 |
-ne | 不等於則爲真 |
-gt | 大於則爲真 |
-ge | 大於等於則爲真 |
-lt | 小於則爲真 |
-le | 小於等於則爲真 |
可是涉及到浮點值時,數值條件測試會有一個限制。bash shell只能處理整數。命令行
參數 | 說明 |
---|---|
= | 等於則爲真 |
!= | 不相等則爲真 |
-z 字符串 | 字符串的長度爲零則爲真 |
-n 字符串 | 字符串的長度不爲零則爲真 |
< | 檢查前面的字符串是否比後面的小 |
> | 檢查前面的字符串是否比後面的大 |
字符串相等性:3d
在比較兩個字符串的相等性時,比較測試會將全部的標點和大小寫狀況都考慮在內。code
字符串順序: htm
注意問題:
參數 | 說明 |
---|---|
-e 文件名 | 若是文件存在則爲真 |
-r 文件名 | 若是文件存在且可讀則爲真 |
-w 文件名 | 若是文件存在且可寫則爲真 |
-x 文件名 | 若是文件存在且可執行則爲真 |
-s 文件名 | 若是文件存在且至少有一個字符則爲真 |
-d 文件名 | 若是文件存在且爲目錄則爲真 |
-f 文件名 | 若是文件存在且爲普通文件則爲真 |
-c 文件名 | 若是文件存在且爲字符型特殊文件則爲真 |
-b 文件名 | 若是文件存在且爲塊特殊文件則爲真 |
file1 -nt file2 | 檢查file1是否比file2新 |
file1 -ot file2 | 檢查file1是否比file2舊 |
舉例1:
上面代碼使用了-d測試條件來檢查用戶的$HOME目錄是否存在。若是它存在的話,它將繼續使用cd命令來切到$HOME目錄並進行顯示目錄下的文件。
舉例2:
-e比較容許你在腳本中使用對象前檢查文件或目錄對象是否存在,而後上面代碼表示若不存在建立一個新文件testing
舉例3:
-e比較適用於文件和目錄。但要肯定指定的對象是個文件,必須用-f比較
if-then語句容許使用布爾邏輯來組合測試。有兩種布爾運算符可用:
if-then語句容許使用布爾邏輯來組合測試。有兩種布爾運算符可用:
以上解釋以下,若是var一、var2同時知足大於15,輸出$$;若是var一、var2有一個知足大於15,輸出||;不然輸出not
雙括號的命令格式以下:
1 ((expression))
expression能夠是任意的數學賦值或比較表達式。
雙方括號的命令格式以下:
1 [[expression]]
expression使用了test命令中採用的標準字符串比較。