虽然if...elif语言可以做多项选择,但是使用case在有大量选择的情况下,更为合理,case语句与C语言的case有些相似,可以根据条件选择对应的语句执行。
1.形式
case语句
case 变量 in
模式11 [ | 模式12 ] ...) 表达式;;
模式21 [ | 模式22 ] ...) 表达式;;
模式31 [ | 模式32 ] ...) 表达式;;
...
esac
每一个模式都用)结尾,每一条语句都要以;;结尾,整个case语句以esac结尾。匹配到相应的模式,只会执行这一个模式,然后跳出。和C语言如果不以break结尾,则会继续执行下面的语句,但是这里的不会,它只会执行当前匹配的这一条。
而且case语句可以有多个匹配模式,其中还能嵌套各种其他条件。
(1).案例1
#! /bin/bash
echo "输入字符串"
read str
case $str in
yes) echo "输入yes";;
no) echo "输入no";;
ha) echo "输入哈";;
*) echo "输入错误";;
esac
exit 0
输入对应的字符串,则会输出相应的语句
比如输入yes,则输出”输入yes“
(2)案例2
#! /bin/bash
echo "输入字符串"
read str
case $str in
yes | y | Y | Yes | YES) echo "输入yes";;
n* | N*) echo "输入no";;
*) echo "输入错误";;
esac
exit 0
如果我们输入yes或者y或者Y,或者YES则会输出 输入yes
如果我们输入以n或者N开头的字符串,则会输出 输入no
如果都不是,则输出输入错误
(3)案例3
#! /bin/bash
read str
case $str in
yes | Y | Yes | YES)
echo "Good Morning"
echo "Up bright and early this moring"
;;
[nN*])
echo "Good Afternoon"
;;
*)
echo "Sorry, answer not recongnized"
echo "Please answer yes or no"
exit 1
;;
esac
exit 0