Shell語法——參數變量,測試與比較
阿新 • • 發佈:2018-10-06
等於 文件的 單個字符 amp $2 body 一個 所有 豎線
特殊變量
變量 | 說明 |
---|---|
$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 | <= | 小於相等 |
邏輯操作符
在 [] 以及 test 中使用的比較符號 | 在 (()) 和 [[]] 中使用的比較符號 | 說明 |
---|---|---|
-a | && | and,與,兩端都為真,則結果為真 |
-o | 雙豎線 | or,或,兩端有一個為真,則結果為真 |
! | ! | not,非,兩端相反,則結果為真 |
Shell語法——參數變量,測試與比較