2009年5月12日 星期二

BASH測試條件

VariableName?=VariableValue? ,指定變數。使用 $VariableName? 來取用變數。
使用 \$$VariableName? 來 在變數前加上 $。
可使用 export VariableName?1 VariableName?2 來當作其它的程式的參數使用。
VariableName?=$Command,指定變數為 Command 執行後的結果。

使用 $0 取得執行的指令名稱 。
使用 $1 取得第一個參數,其餘依此類推。
使用 $# 取得參數的總數。
使用 $? 取得上一個指令的傳回值。
使用 $* 或是 $@ 來得到所有的參數,中間以空白隔開。
使用 $Environment 來 取得環境變數。
read VariableName? , 讓使用者輸入變數的內容。
 
條件測試:

test Expression
echo $?(1 為假,0 為真。和一般的 C 習慣相反。)
 
[Expression]
echo $?
Expression 的類型:

字串運算式,不得使用萬用字元。
String1 = String2 :如果 String1 和 String2 一樣,則回傳值為真。
String1 == String2 :如果 String1 和 String2 一樣,則回傳值為真。
String1 != String2 :如果 String1 和 String2 不一樣,則回傳值為真。
String :如果 String 不是 Null,則回傳值為真。
-n String :如果 String 的長度大於 0,則回傳值為真。
-z String :如果 String 的長度等於 0,則回傳值為真。
數值運算式
integer1 -eq integer2 :如果 integer1 等於 integer2 ,則回傳值為真。
integer1 -ge integer2 :如果 integer1 大於等於 integer2 ,則回傳值為真。
integer1 -gt integer2 :如果 integer1 大於 integer2 ,則回傳值為真。
integer1 -le integer2 :如果 integer1 小於等於 integer2 ,則回傳值為真。
integer1 -lt integer2 :如果 integer1 小於 integer2 ,則回傳值為真。
integer1 -ne integer2 :如果 integer1 不等於 integer2 ,則回傳值為真。
檔案運算式
-d FileName? :若 FileName? 存在,並且為目錄,則回傳值為真。
-f FileName? :若 FileName? 存在,並且為一般檔案,則回傳值為真。
-s FileName? :若 FileName? 存在,並且的長度大於 0,則回傳值為真。
-r FileName? :若 FileName? 存在,並且可讀取,則回傳值為真。
-w FileName? :若 FileName? 存在,並且可寫入,則回傳值為真。
-x FileName? :若 FileName? 存在,並且可執行,則回傳值為真。
-b FileName? :若 FileName? 存在,並且為 block,則回傳值為真。
-c FileName? :若 FileName? 存在,並且為 character,則回傳值為真。
-e FileName? :若 FileName? 存在,則回傳值為真。
-g FileName? :若 FileName? 存在,並且為 set-group-id,則回傳值為真。
-k FileName? :若 FileName? 存在,並且設定了 sticky 字元,則回傳值為真。
-L FileName? :若 FileName? 存在,並且為連結檔,則回傳值為真。
-p FileName? :若 FileName? 存在,並且為 named pipe (FIFO),則回傳值為真。
-S FileName? :若 FileName? 存在,並且為 socket,則回傳值為真。
-u FileName? :若 FileName? 存在,並且為 set-user-id,則回傳值為真。
邏輯運算式
! Expression :如果 Expression 的結果值為假,則回傳值為真。
Expression1 -a Expression1 :將 Expression1 和Expression2 的結果值做And 運算。
Expression1 -o Expression1 :將 Expression1 和Expression2 的結果值做Or 運算。

沒有留言: