? ? case語句相當于多分支的if/elif/else語句,而在使用case會讓腳本看起來更簡單工整察郁。在case語句中,程序會將獲取到的值與case表達式中的條件逐一進行對比美旧,如果匹配則執(zhí)行對應(yīng)的語句怀大,遇到雙分號(;;)則停止執(zhí)行。如果一直未找到匹配項逼友,則執(zhí)行*)后面的語句精肃,相當其他語言中的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: 期待整數(shù)表達式
caseif.sh: 第 6 行:[: a: 期待整數(shù)表達式
caseif.sh: 第 9 行:[: a: 期待整數(shù)表達式
case default value
case語句總結(jié)
- 1、case語句比較適合變量值較少且為固定的數(shù)字或字符串集合的情況黎烈。
- 2习柠、case一般常用于編寫服務(wù)的啟動腳本等
- 3、if則是取值進行判斷比較照棋,應(yīng)用面比case要廣资溃,大部分的case語句可以使用if進行替代