if
語(yǔ)句在順序執(zhí)行代碼語(yǔ)句的流程中執(zhí)行條件性任務(wù)。根據(jù)設(shè)置的條件,判斷是否運(yùn)行一段代碼語(yǔ)句。
在if
語(yǔ)句中,如果判斷為true
,則執(zhí)行給定的代碼語(yǔ)句進(jìn)行相關(guān)操作。如果判斷為false
,則略過(guò)給定的代碼語(yǔ)句不進(jìn)行相關(guān)操作。
基本語(yǔ)法:
if [ expression ];
then
statements
fi
注:
expression
是判斷表達(dá)式。statements
是給定的執(zhí)行語(yǔ)句。
&&
邏輯運(yùn)算符使用多個(gè)條件:
if [ expression_1 ] && [ expression_2 ];
then
statements
fi
||
邏輯運(yùn)算符使用多個(gè)條件:
if [ expression_1 ] || [ expression_2 ];
then
statements
fi
&&
和||
邏輯運(yùn)算符:
if [[ expression_1 && expression_2 || expression_3 ]];
then
statements
fi
示例:
#!/bin/bash
## TRUE && TRUE
if [ 8 -gt 6 ] && [ 10 -eq 10 ];
then
echo "Conditions are true"
fi
## TRUE && FALSE
if [ "mylife" == "mylife" ] && [ 3 -gt 10 ];
then
echo "Conditions are false"
fi
執(zhí)行后得到以下結(jié)果:
Conditions are true
選項(xiàng) | 描述 |
---|---|
! EXPRESSION |
檢查EXPRESSION 是否為假。 |
-n STRING |
檢查STRING 的長(zhǎng)度是否大于零。 |
-z STRING |
檢查STRING 的長(zhǎng)度是否為零(即為空) |
STRING1 == STRING2 |
檢查STRING1 是否等于STRING2 。 |
STRING1 != STRING2 |
檢查STRING1 是否不等于STRING2 。 |
INTEGER1 -eq INTEGER2 |
檢查INTEGER1 在數(shù)值上是否等于INTEGER2 。 |
INTEGER1 -gt INTEGER2 |
檢查INTEGER1 在數(shù)值上是否大于INTEGER2 。 |
INTEGER1 -lt INTEGER2 |
檢查INTEGER1在數(shù)值上是否小于INTEGER2。 |
-d FILE |
檢查FILE 是否存在并且它是一個(gè)目錄。 |
-e FILE |
檢查FILE是否存在。 |
-r FILE |
檢查FILE是否存在,并授予讀取權(quán)限。 |
-s FILE |
檢查FILE是否存在并且其大小大于零(表示它不為空)。 |
-w FILE |
檢查FILE是否存在并授予寫(xiě)權(quán)限。 |
-x FILE |
檢查FILE 是否存在并授予執(zhí)行權(quán)限。 |
在 Bash 的實(shí)際運(yùn)用中可能會(huì)需要多個(gè) if 語(yǔ)句。這時(shí)可能就會(huì)出現(xiàn)在一個(gè) if 語(yǔ)句中使用另一個(gè) if 語(yǔ)句的情況,這被稱為嵌套 if 語(yǔ)句。 示例:
#!/bin/bash
#Nested if statement
if [ $1 -gt 50 ]
then
echo "Number is greater than 50."
if (( $1 % 2 == 0 ))
then
echo "and it is an even number."
fi
fi
執(zhí)行后得到以下結(jié)果:
Number is greater than 50.
and it is an even number.
更多建議: