| 測試的標誌 | 代表意義 |
| 1. | 關於檔名的『類型』偵測(存在與否),如 test -e filename |
| -e | 該『檔名』是否存在?(常用) |
| -f | 該『檔名』是否為檔案(file)?(常用) |
| -d | 該『檔名』是否為目錄(directory)?(常用) |
| -b | 該『檔名』是否為一個 block device 裝置? |
| -c | 該『檔名』是否為一個 character device 裝置? |
| -S | 該『檔名』是否為一個 Socket 檔案? |
| -p | 該『檔名』是否為一個 FIFO (pipe) 檔案? |
| -L | 該『檔名』是否為一個連結檔? |
| 2. | 關於檔案的權限偵測,如 test -r filename |
| -r | 偵測該檔名是否具有『可讀』的屬性? |
| -w | 偵測該檔名是否具有『可寫』的屬性? |
| -x | 偵測該檔名是否具有『可執行』的屬性? |
| -u | 偵測該檔名是否具有『SUID』的屬性? |
| -g | 偵測該檔名是否具有『SGID』的屬性? |
| -k | 偵測該檔名是否具有『Sticky bit』的屬性? |
| -s | 偵測該檔名是否為『非空白檔案』? |
| 3. | 兩個檔案之間的比較,如: test file1 -nt file2 |
| -nt | (newer than)判斷 file1 是否比 file2 新 |
| -ot | (older than)判斷 file1 是否比 file2 舊 |
| -ef | 判斷 file1 與 file2 是否為同一檔案。 |
| 4. | 關於兩個整數之間的判定,例如 test n1 -eq n2 |
| -eq | 兩數值相等 (equal) |
| -ne | 兩數值不等 (not equal) |
| -gt | n1 大於 n2 (greater than) |
| -lt | n1 小於 n2 (less than) |
| -ge | n1 大於等於 n2 (greater than or equal) |
| -le | n1 小於等於 n2 (less than or equal) |
| 5. | 判定字串的資料 |
| test -z string | 判定字串 string 是否為空字串? |
| test -n string | 判定字串 string 是否不為空字串? |
| test str1 == str2 | 判定 str1 是否等於 str2 ,若相等回傳 true |
| test str1 != str2 | 判定 str1 是否不等於 str2 ,若相等回傳 false |
| 6. | 多重條件判定,例如: test -r filename -a -x filename |
| -a | (and)兩狀況同時成立。例如 test -r file -a -x file, |
| 則 file 同時具有 r 與 x 權限時,才回傳 true。 | |
| -o | (or)兩狀況任何一個成立。例如 test -r file -o -x file, |
| 則 file 具有 r 或 x 權限時,就可回傳 true。 | |
| ! | [lt]反相狀態,如 test ! -x file ,
當 file 不具有 x 時,回傳 true |
[ ],判斷變數 $HOME 是否為空字串?
[root@linux ~]# [ -z "$HOME" ]
[ ] 內的每個元件都需要有空白鍵來分隔,假設空白鍵使用□ 來表示,則:
[ "$HOME" == "$MAIL" ] [□"$HOME"□==□"$MAIL"□] ↑ ↑ ↑ ↑
$0, $1, ...) 對應:
/path/to/scriptname opt1 opt2 opt3 opt4 ...
$0 $1 $2 $3 $4 ...
[root@linux ~]# /etc/init.d/crond restart
## $0 為 /etc/init.d/crond, $1 為 restart
DYWANG_HOME