在本小節中,我們將討論Bash case語句的基礎以及如何在Bash腳本中使用。
Bash case語句是具有許多ELIF
元素的IF-THEN-ELSE
的最簡單形式。使用case
語句使bash腳本更具可讀性,並且更易於維護。它通常用於簡化具有多種不同選擇的複雜條件。
Bash case語句遵循與Javascript或C語言中的switch
語句類似的邏輯。但是又略有不同,如下所示:
- Bash
case
語句只接受一次值,然後多次測試該值。一旦找到模式就執行與其鏈接的語句,它將停止搜索模式,這與Cswitch
語句幾乎相反。
case語句語法
bash case語句的語法如下:
case expression in
pattern_1)
statements
;;
pattern_2)
statements
;;
pattern_3|pattern_4|pattern_5)
statements
;;
pattern-n)
statements
;;
*)
statements
;;
esac
bash case語句的一些重要說明:
bash中的每個
case
語句均以case
關鍵字開頭,後接case
運算式和in
關鍵字。使用esac
關鍵字關閉case
語句。- 可以應用以
|
分隔的多個模式運算符,運算符指示模式列表的終止。 - 包含語句的模式稱為子句,並且必須以雙分號(
;;
)終止。 - 星號(
*
)用作定義默認情況的最終模式。當用作最後一種情況時,它用作默認情況。
運作方式
首先,case
語句擴展運算式並嘗試與每個包含的模式匹配。找到匹配項後,將執行所有鏈接的語句,直到雙分號(;;
)為止。在第一個匹配項之後,case
以最後執行的語句的退出狀態終止。
如果沒有匹配的模式,則case
的退出狀態為零。否則,返回狀態是已執行語句的退出狀態。
如果使用默認的星號(*
)模式,則在沒有匹配模式的情況下將執行它。
下麵通過一些示例來瞭解這種機制:
示例1
在此示例中,定義了一個簡單的場景來演示case
語句的用法。
Bash腳本檔:case-demo1.sh -
#!/bin/bash
echo "Do you know Java Programming?"
read -p "Yes/No? :" Answer
case $Answer in
Yes|yes|y|Y)
echo "That's amazing."
echo
;;
No|no|N|n)
echo "It's easy. Let's start learning from xuhuhu.com."
;;
esac
執行上面示例代碼,得到以下結果:
示例2
在此示例中,定義了一個組合case
,其中還存在一個默認情況,即前面找不到匹配的case
。
Bash腳本檔:case-demo2.sh -
#!/bin/bash
echo "Which Operating System are you using?"
echo "Windows, Android, Chrome, Linux, Others?"
read -p "Type your OS Name:" OS
case $OS in
Windows|windows|window|win)
echo "That's common. You should try something new."
echo
;;
Android|android)
echo "This is my favorite. It has lots of applications."
echo
;;
Chrome|chrome)
echo "Cool!!! It's for pro users. Amazing Choice."
echo
;;
Linux|linux)
echo "You might be serious about security!!"
echo
;;
*)
echo "Sounds interesting. I will try that."
echo
;;
esac
執行上面示例代碼,得到以下結果:
上一篇:
Bash else-If語句
下一篇:
Bash for迴圈