case語句相當於多分支的if/elif/else語句,而在使用case會讓腳本看起來更簡單工整。在case語句中,程式會將獲取到的值與case表達式中的條件逐一進行對比,如果匹配則執行對應的語句,遇到雙分號(;;)則停止執行。如果一直未找到匹配項,則執行 \ ) 後面的 ...
case語句相當於多分支的if/elif/else語句,而在使用case會讓腳本看起來更簡單工整。在case語句中,程式會將獲取到的值與case表達式中的條件逐一進行對比,如果匹配則執行對應的語句,遇到雙分號(;;)則停止執行。如果一直未找到匹配項,則執行*)後面的語句,相當其他語言中的default功能。
基本語法
case "var" in
value 1)
語句
;;
value 2)
語句
;;
value n)
語句
;;
*)
語句
esac
最後一個分支語句,即esac前,可以省略雙分號
case示例
[root@localhost Test]# cat case.sh
#!/bin/bash
a=$1
case "${a}" in
1)
echo "input number is 1"
;;
2)
echo "input number is 2"
;;
3)
echo "input number is 3"
;;
*)
echo "case default value"
esac
[root@localhost Test]# bash case.sh 1
input number is 1 # 匹配條件1
[root@localhost Test]# bash case.sh 3
input number is 3 # 匹配條件3
[root@localhost Test]# bash case.sh a
case default value # 未匹配到條件
使用if語句同樣可以達到同樣的效果
[root@localhost Test]# cat caseif.sh
#!/bin/bash
a=$1
if [ ${a} -eq 1 ]
then
echo "input number is 1"
elif [ ${a} -eq 2 ]
then
echo "input number is 2"
elif [ ${a} -eq 3 ]
then
echo "input number is 3"
else
echo "case default value"
fi
[root@localhost Test]# bash caseif.sh 1
input number is 1
[root@localhost Test]# bash caseif.sh 3
input number is 3
[root@localhost Test]# bash caseif.sh a
caseif.sh: 第 3 行:[: a: 期待整數表達式
caseif.sh: 第 6 行:[: a: 期待整數表達式
caseif.sh: 第 9 行:[: a: 期待整數表達式
case default value
case語句總結
- 1、case語句比較適合變數值較少且為固定的數字或字元串集合的情況。
- 2、case一般常用於編寫服務的啟動腳本等
- 3、if則是取值進行判斷比較,應用面比case要廣,大部分的case語句可以使用if進行替代
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註: