介绍Bash Case 语句
本文介绍bash中case语句的语法。case语句通常用于简化多种不同选择的复杂条件场景,使用case代替if使得脚本代码更易读、易维护。
case语句与C语言、javasc中的switch语句类似。与C不同的是,一旦Bash中case语句匹配了一个条件并执行语句,则不再继续搜索后续匹配条件,相当于自动增加了break语句。
1. case语句语法
语法结构如下:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
-
每个case语句以
case
关键字开头,后面跟上评估表达式和in
关键字。最后以esac
关键字结束。 -
可以使用多个模式,使用
|
分隔符进行分割,)
操作符表示模式列表结束。 -
模式及其相关命令称为子句,每个子句比喻使用
;;
符号作为结束符。 -
第一个匹配的模式对应命令被执行。
-
通常习惯使用通配符,星号
*
作为缺省情况,该模式总是匹配。 -
没有模式匹配时,返回状态为0。否则返会状态是执行命令的退出状态。
2. 示例
下面示例在bash脚本中使用case语句,打印给定国家的官方语言:
#!/bin/bash
echo -n "enter the name of a country: "
read country
echo -n "the official language of $country is "
case $country in
chinese)
echo -n "Chinese";;
japanese)
echo -n "Japanese";;
uk)
echo -n "English";;
*)
echo -n "unknown";;
esac
echo -e '\n'
保持脚本为languages.sh并执行:
bash languages.sh
脚本程序首先提示输入国家,如果输入uk,则匹配第三个模式,则对应echo命令被执行。脚本输出为:
enter the name of a country: uk
the official language of uk is English
如果你输入不匹配的国家,则缺省子句被执行:
enter the name of a country: usa
the official language of usa is unknown
3. 总结
现在大概应该理解了bash中case语句了吧。通常脚本中用于检验命令行传入的参数。如不同参数表示开始、停止或重启服务。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/108604978