case语句
case语句可以将一个变量的内容与多个选项进行匹配,若匹配成功,则执行该条件下对应的语句。case语句的格式如下:
case var in
选项1) …;;
'选项2') …;;
"选项3") …;;
…
*) …
esac
exit 0
其中选项表示匹配项,用于与var值进行匹配,匹配项可以使用引号引起来(单引号/双引号),也可以直接给出;选项后跟一个“)”,)之后才是对应匹配条件下执行的内容,每个匹配条件都以“;;”结尾;最后一个匹配项类似C语言中的“default”,是一个通配符,该匹配项的末尾不需要“;;”。
case语句中的关键字有:case、esac。esac表示case语句到此结束。
案例6:实现一个简单的四则运算,要求用户可以从键盘输入两个数据,和一个运算符,脚本程序根据用户的输入,输出计算结果。
1 #!/bin/sh
2 echo -e "a:\c"
3 read a
4 echo -e "b:\c"
5 read b
6 echo -e "select(+ - * /):\c"
7 read var
8 case $var in
9 '+') echo "a+b="`expr $a "+" $b`;;
10 "-") echo "a-b="`expr $a "-" $b`;;
11 "*") echo "a*b="`expr $a "*" $b`;;
12 "/") echo "a/b="`expr $a "/" $b`;;
13 *) echo "error"
14 esac
15 exit 0
该脚本中的echo后添加了参数“-e”,该参数表示开启转义;输出内容的末尾添加了“\c”,表示输出内容之后不换行。执行该脚本,结果如下:
a:3
b:6
select(+ - * /):+
a+b=9
case语句的匹配条件可以是多个,每个匹配项的多个条件使用“|”符连接。比如操作系统中常用的“yes”或“no”选项,当用户输入“Y”、“y”或“N”、“n”等时,系统应可以根据用户的输入给出肯定或否定的操作,下面给出实现该脚本的简单代码。
#!/bin/sh
read var
case $var in
yes | y |Y) echo "true";;
no | n | N) echo "flase";;
*) echo "input error"
esac
exit 0
执行该脚本,若用户输入“yes”、“y”和“Y”,脚本会打印“true”;若用户输入“no”、“n”或“N”,脚本会打印“flase”;若用户输出其它信息,脚本会打印“input error”。