Shell特殊變量 $0, $#, $*, $@, $?, $$和命令行參數
Shell 中的特殊變量參考如下表:
變量 | 含義 |
---|---|
$0 | 當前腳本的文件名 |
$n | 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2 |
$# | 傳遞給腳本或函數的參數個數 |
$* | 傳遞給腳本或函數的所有參數 |
$@ | 傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到 |
$? | 上個命令的退出狀態,或上個函數的返回值 |
$$ | 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID |
注:$ 和 $@ 的區別*
- $* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。
- 但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作爲一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。
Shell 中的 if 判斷
條件測試的表達式
- if [ str1 = str2 ]:當兩個串有相同內容、長度時爲真
- if [ str1 != str2 ]:當串str1和str2不等時爲真
- if [ -n str1 ]:當串的長度大於0時爲真(串非空)
- if [ -z str1 ]:當串的長度爲0時爲真(空串)
- if [ str1 ]:當串str1爲非空時爲真
整數比較
- -eq:測試兩個整數是否相等
- -ne:測試兩個整數是否不等
- -gt:測試一個數是否大於另一個數
- -lt:測試一個數是否小於另一個數
- -ge:大於或等於
- -le:小於或等於
命令間的邏輯關係:
- 邏輯與:&&
- 邏輯或:||
字符串比較
字符串比較,直接用 ==、!=、>、< 等符號即可,兩邊需要有空格。
文件測試
- -e:FILE 測試文件是否存在
- -f:file 測試文件是否爲普通文件
- -d:file 測試指定路徑是否爲目錄
- -r:file 測試文件對當前用戶是否可讀
- -w:file 測試文件對當前用戶是否可寫
- -x:file 測試文件對當前用戶是都可執行