(1) 用if…fi來測試判斷式:
(1-1) 其基本架構的寫法為:
if [ 判斷式一 ] 邏輯運算符號 [ 判斷式二 ] 邏輯運算符號 [ 判斷式三 ];
then
上述之判斷式串的最終結果若成立,就執行的寫在此命令
elif [ 判斷式甲 ] 邏輯運算符號 [ 判斷式乙 ] 邏輯運算符號 [ 判斷式丙 ];
then
第一個判斷式串最終結果為不成立,而第二的判斷式串最終結果成立,就執行的寫在此命令
else
所有判斷式串均不成立時,就執行的寫在此命令
fi
說明:
※ 邏輯運算符號,可以是&&或 ||。在中括號之中,&&代表交集,||代表聯集。
※ [ 判斷式 ]與邏輯運算符號可以有無限組或只有一個[ 判斷式 ],不限於上例之三組。
※ [ 判斷式 ]中,判斷式即是3.所介紹過的判斷式。而判斷式與左右中括號之間,一定各要相隔一個空白字元,否則執行會出錯。
※ elif 相當於C++中的 else if。
※ fi 為 if的倒反,表示if判斷式語所執行命令的結束。
(1-2) 範例如:
read -p "input n1:" n1
read -p "input n2:" n2
if [ $n1 -gt $n2 ] ;
then
echo "n1 is greater"
elif [ $n2 -gt $n1 ];
then
echo "n2 is greater"
else
echo "n1 equal to n2"
fi
執行後,n1輸入5,n2輸入10,顯示:
(2) 用case…esac來判斷:
(2-1) 其基本架構的寫法為:
case $變數名稱 in
值一)
若變數的值等於值一,就執行寫在此的命令
;;
值二)
若變數的值等於值二,就執行寫在此的命令
;;
*)
若變數的值不等於上述所有情況,就執行寫在此的命令
;;
esac
說明:
※ 對變數之值的測試可以有無限個,不限於上述之兩個。
※ 注意:每一段執行命令後面,必有兩個分號 ;;。
(2-2)範例:
read -p "do you want to go swimming? yes or no?" reply
case $reply in
"yes")
echo "OK, let's go!"
;;
"no")
echo "oh! perhaps another day."
;;
*)
echo "sorry? what are you talking about?"
;;
esac
執行後輸入 yes,顯示結果如:
留言列表