1. 退出狀態
在Linux系統中,每當一條命令執行完成後,系統都會返回一個退出狀態,這個狀態被存放在$? 這個變量中,是一個整數值,我們可以根據這個值來判斷命令運行的結果是否正確。
通常情況下,退出狀態值爲0,表示執行成功,不爲0的時候表示執行失敗。
POSIX規定的退出狀態和退出狀態的含義:
0 運行成功
1-255 運行失敗,腳本命令、系統命令錯誤或參數傳遞錯誤
126 找到了該命令但無法執行
127 未找到要運行的命令
128 命令被系統強行結束
2. 測試命令
用test命令進行測試,expression是一個表達式:
test expression
爲了提高可讀性,可以使用另一種格式:
[ expression ]
需要注意的是大括號和表達式之間需要有一個空格,不能省略。這種方式和if、case、while等語句結合,可以作爲shell腳本中的判斷條件。
3. 整數比較運算符
在shell中對兩個數進行比較,不像在C/C++中可以使用“>”之類的運算符,而是使用類似參數選項的格式。
-eq 如果等於則爲真
-ge 如果大於或等於則爲真
-gt 如果大於則爲真
-le 如果小於或等於則爲真
-lt 如果小於則爲真
-ne 如果不等於則爲真
其中的參數可以這樣理解e(equal),g(greater),t(than),l(less),n(not),這樣方便記憶。
4. 字符串相關運算符
-n string 字符串不爲空則爲真
-z string 字符串爲空則爲真
string1 = string2 字符串相等則爲真 (或者 == 也可以)
string1 != string2 字符串不等則爲真
這裏有一個需要注意的地方,就是使用 -n 這個運算符進行判斷的時候需要注意在變量兩邊加上雙引號。
例如 if [ -n $string ] 應該寫成 if [ -n “$string” ] ,不然該表達式總是會返回真,因爲當string變量爲空的時候就相當於是 if [ -n ]。
5. 文件操作符
-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是否符號化鏈接
6. 邏輯運算符
! expression 非
expression1 –a expression2 與
expression1 –o expression2 或
多重的嵌套:
例如 if [ $a == 1 ] && [ $b == 1 -o $b == 3 ]