UNIX Shell 編程
一些條件判斷 總結
-b file 若檔案存在且是一個塊特殊檔案,則為真
-c file 若檔案存在且是一個字元特殊檔案,則為真
-d file 若檔案存在且是一個目錄,則為真
-e file 若檔案存在,則為真
-f file 若檔案存在且是一個規則檔案,則為真
-g file 若檔案存在且設定了SGID位的值,則為真
-h file 若檔案存在且為一個符合連結,則為真
-k file 若檔案存在且設定了"sticky"位的值
-p file 若檔案存在且為一已具名管道,則為真
-r file 若檔案存在且可讀,則為真
-s file 若檔案存在且其大小大於零,則為真
-u file 若檔案存在且設定了SUID位,則為真
-w file 若檔案存在且可寫,則為真
-x file 若檔案存在且可執行,則為真
-o file 若檔案存在且被有效使用者ID所擁有,則為真
-z string 若string長度為0,則為真
-n string 若string長度不為0,則為真
string1 = string2 若兩個字串相等,則為真
string1 != string2 若兩個字串不相等,則為真
int1 -eq int2 若int1等於int2,則為真
int1 -ne int2 若int1不等於int2,則為真
int1 -lt int2 若int1小於int2,則為真
int1 -le int2 若int1小於等於int2,則為真
int1 -gt int2 若int1大於int2,則為真
int1 -ge int2 若int1大於等於int2,則為真
!expr 若expr為假則複合運算式為真。expr可以是任何有效測試運算式
expr1 -a expr2 若expr1和expr2都為真則整式為真
expr1 -o expr2 若expr1和expr2有一個為真則整式為真
特殊變數
$0 正在被執行命令的名字。對於shell指令碼而言,這是被啟用命令的路徑
$n 該變數與指令碼被啟用時所帶的參數相對應。n是正整數,與參數位置相對應($1,$2...)
$# 提供指令碼的參數號
$* 所有這些參數都被雙引號引住。若一個指令碼接收兩個參數,$*等於$1$2
$@ 所有這些參數都分別被雙引號引住。若一個指令碼接收到兩個參數,$@等價於$1$2
$? 前一個命令執行後的退出狀態
$$ 當前shell的進程號。對於shell指令碼,這是其正在執行時的進程ID
$! 前一個後台命令的進程號
若 要用 < > <= >= 來比較數字,則判斷式需擺在 (( )) 中,如:
(( "982" > "24" ))