学科分类
目录
Linux编程

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”。

点击此处
隐藏目录