天天看點

Shell文法——參數變量,測試與比較

特殊變量           
變量 說明
$0 擷取目前執行的 Shell 腳本的檔案名,如果執行腳本包含了路徑,則包含腳本路徑
$n 擷取目前執行的 Shell 腳本的第 n 個參數值,即 n=1..9,n 為 0 時,同上
$# 擷取目前執行的 Shell 腳本後面接的參數的總個數
$* 擷取目前 Shell 腳本所有傳參的參數,加上雙引号,"$*" 表示将所有的參數視為單個字元串,相當于 "$1 $2 $3"
$@ 擷取目前 Shell 腳本所有傳參的參數,不加雙引号和 $* 相同。加上雙引号,"$@" 表示将所有的參數視為不同的獨立字元串,相當于 "$1" "$2" "$3"
$? 擷取上一個指令的執行狀态的傳回值(0 為成功,非 0 則失敗)
檔案測試表達式           
常用檔案測試操作符
-d 檔案 檔案存在且為目錄則為真,即測試表達式成立
-f 檔案 檔案存在且為普通檔案則為真,即測試表達式成立
-e 檔案 檔案存在則則為真,即測試表達式成立。不區分檔案或目錄
-r 檔案 檔案存在且可讀則為真,即測試表達式成立
-s 檔案 檔案存在且大小不為 0 則為真,即測試表達式成立
-w 檔案 檔案存在且可寫則為真,即測試表達式成立
-x 檔案 檔案存在且可執行則為真,即測試表達式成立
-L 檔案 檔案存在且為連結則為真,即測試表達式成立
f1 -nt f2 檔案 f1 比檔案 f2 新則為真,即測試表達式成立。根據檔案的修改時間來計算
f1 -ot f2 檔案 f1 比檔案 f2 舊則為真,即測試表達式成立。根據檔案的修改時間來計算
字元串測試表達式           
常用字元串測試操作符
-n "字元串" 若字元串的長度不為 0 ,則為真,即測試表達式成立,n 可以了解為 no zero
-z "字元串" 若字元串的長度為 0 ,則為真,即測試表達式成立,z 可以了解為 no zero
"串1" = "串2" 若字元串 1 等于字元串 2,則為真,即測試表達式成立,可使用 "=="代替 "="
"串1" != "串2" 若字元串 1 不等于字元串 2,則為真,即測試表達式成立,但不能使用 "!=="代替 "!="
整數二進制比較操作符           
在 [] 以及 test 中使用的比較符号 在 (()) 和 [[]] 中使用的比較符号
-eq == 或 = 相等
-ne != 不相等
-gt > 大于
-ge >= 大于相等
-lt < 小于
-le <= 小于相等
邏輯操作符           
-a && and,與,兩端都為真,則結果為真
-o 雙豎線 or,或,兩端有一個為真,則結果為真
! not,非,兩端相反,則結果為真