標籤:style io 使用 sp strong 檔案 on bs amp
1. 測試開關
Shell中內建的一些測試指令, 下表列出這些測試指令的含義以及是否可用於 test命令, bash, ksh.
開關 |
test |
bash |
ksh |
定義 |
-a FILE |
|
支援 |
支援 |
只是檔案存在 |
-b FILE |
支援 |
支援 |
支援 |
檔案存在, 並且是一個類似於 /dev 下的磁碟裝置之類的塊檔案 |
-c FILE |
支援 |
支援 |
支援 |
檔案存在, 並且是一個類似於 /dev 下的TTY裝置之類的字元檔案 |
-d FILE |
支援 |
支援 |
支援 |
檔案存在, 並且是一個標準目錄 |
-e FILE |
支援 |
支援 |
支援 |
只是檔案存在 |
-f FILE |
支援 |
支援 |
支援 |
檔案存在, 並且是一個類似於一般檔案的標準檔案 |
-g FILE |
支援 |
支援 |
支援 |
檔案存在, 並且是一個set-group-ID. 這是指對檔案可執行性的使用者有效組進行改變的檔案許可 |
-G FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它的組所有權是使用者的有效組ID |
-h FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它是一個符號連結. 和 -L 一樣 |
-k FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它粘著位設定. 這意味著只有檔案的所有者或者目錄的所有者可以刪除檔案 |
-l STRING |
支援 |
|
|
和類似於 /usr/bin/test -l string -gt 5 && echo 的數字值, 比較 STRING 長度 |
-L FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它是一個符號連結. 和 -h 一樣 |
-n STRING |
支援 |
支援 |
支援 |
STRING 的長度非零 |
-N FILE |
|
支援 |
支援 |
檔案存在, 但是自從最近一次讀入之後, 已經被修改 |
-o OPTION |
支援 |
支援 |
支援 |
如果 shell 的 OPTION 被開啟, 返回真, 例如 set -x |
-O FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它的所有者由有效使用者ID決定 |
-p FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它是一個具名管道 (or FIFO) |
-r FILE |
支援 |
支援 |
支援 |
檔案存在, 並且可讀 |
-s FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它的大小大於 0 位元組 |
-S FILE |
支援 |
支援 |
支援 |
檔案存在, 並且它是一個 socket |
-t [FD] |
支援 |
支援 |
支援 |
在一個終端開啟 FD(檔案描述符), 預設是 stdout |
-u FILE |
支援 |
支援 |
支援 |
檔案存在, 並且 set-user-ID 被設定 |
-w FILE |
支援 |
支援 |
支援 |
檔案存在, 並且可寫 |
-x FILE |
支援 |
支援 |
支援 |
檔案存在, 並且可執行 |
-z STRING |
支援 |
支援 |
支援 |
STRING 的長度為 0 |
2. 特殊參數
shell中的特殊參數是shell的內部變數, 要用 首碼$ 來使用.
比如 echo $? 就是擷取 shell內部變數 "?" 的值.
內容變數一覽:
參數 |
定義 |
* |
從 1 開始, 完成所有位置變數列表. 如果被雙引號引上, 成為有 IFS (內部檔案分隔字元)值的第一個字元分割的單詞 |
@ |
從 1 開始, 完成所有位置變數列表. 如果被雙引號引上, 將每一個位置參數變成單個詞 |
# |
以十進位表示的位置參數數目 |
? |
最後或者最近一個前台任務的返回碼. 如果任務被一個訊號殺掉, 傳回值為 128 加上訊號的值. 例如: 標準kill訊號值是 15, 那麼傳回值就是 143 |
- |
所有發送給 shell 的標誌, 或者 set 命令提供的標誌 |
$ |
shell 進程ID. 如果在子shell中, 它被擴充為當前shell的值, 而不是子shell的值 |
! |
最近被放到後台執行的命令的進程ID |
_ |
擴充為前一個命令的最後一個參數 |
0 |
擴充為shell或者shell指令碼的名字 |
1…9 |
提供給shell, 函數或者指令碼的位置參數. 比 9 大的值可以用 ${number} 來訪問 |
Shell指令碼中的 測試開關 和 特殊參數