測試類型 |
[] | [[]] | |
數值測試 | eq、ne、lt、le、gt、ge、 | 同[] | |
字符測試 | ==、>、<、!=、=~、不可用(<=、>=) -z "string" -n "" | 同[] | |
文件測試 -# file | 存在性測試: | -a FILE、 -e FILE | 同[] |
存在性的類型測試: | -b、-c、-d、-f、-h(or -L符號鏈接)、-p、-s | ||
文件權限測試 | -r、-w、-x | ||
特殊權限測試; | -u、-g、-k | ||
文件是否有內容: | -s | ||
時間戳: | -N | ||
從屬關系測試: | -O是否為當前用戶屬主、-G 是否為當前用戶數組 | ||
雙目測試: | file1 -nt\-ot file2 file1新\舊於file2 | ||
邏輯測試 | -a、-o、! | &&、||、! | |
數學運算測試 | 不可用 | +、-、*、/、 %、 | |
組合測試 | 各邏輯符號鏈接的文件測試、符號測試、數值(運算)測試 eg:[ -O FILE -a -x FILE ] |
邏輯運算的執行規則:
-a、-o、!等同於&&、||、!----------->與、或、非
command1 && command2
&&: 如果command1結果為假,則command2不再執行;如果command1為真,則繼續執行command2
||:如果command1結果為假,則繼續執行command2;如果command1結果為真,則command2不再執行
eg:
command1 && command2 || command3
如果command1成功運行,回傳$0,運行command2,||得到回傳值$0,command3不會運行;
如果command1運行失敗,command1 && command2 回傳$1,||得到回傳值$1,command3運行成功。