標籤:使用 檔案 file 字串 shell 運算式 ash c
傳統if 從句子——以條件運算式作為 if條件
if [ 條件運算式 ]
then
command
command
command
else
command
command
fi
條件運算式
檔案運算式
if [ -f file ] 如果檔案存在
if [ -d ... ] 如果目錄存在
if [ -s file ] 如果檔案存在且非空
if [ -r file ] 如果檔案存在且可讀
if [ -w file ] 如果檔案存在且可寫
if [ -x file ] 如果檔案存在且可執行
整數Variant 運算式
if [ int1 -eq int2 ] 如果int1等於int2
if [ int1 -ne int2 ] 如果不等於
if [ int1 -ge int2 ] 如果>=
if [ int1 -gt int2 ] 如果>
if [ int1 -le int2 ] 如果<=
if [ int1 -lt int2 ] 如果<
字串Variant 運算式
If [ $a = $b ] 如果string1等於string2
字串允許使用賦值號做等號
if [ $string1 != $string2 ] 如果string1不等於string2
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 為空白
if [ $sting ] 如果string 非空,返回0 (和-n類似)
邏輯非 ! 條件運算式的相反
if [ ! 運算式 ]
if [ ! -d $num ] 如果不存在目錄$num
邏輯與 –a 條件運算式的並列
if [ 運算式1 –a 運算式2 ]
邏輯或 -o 條件運算式的或
if [ 運算式1 –o 運算式2 ]
邏輯運算式
運算式與前面的= != -d –f –x -ne -eq -lt等合用
邏輯符號就正常的接其他運算式,沒有任何括弧( ),就是並列
if [ -z "$JHHOME" -a -d $HOME/$num ]
注意邏輯與-a與邏輯或-o很容易和其他字串或檔案的運算子號搞混了
最常見的賦值形式,賦值前對=兩邊的變數都進行評測
左邊測變數是否為空白,右邊測目錄(值)是否存在(值是否有效)
if test $num -eq 0 等價於 if [ $num –eq 0 ]