当您在shell中有多个不同的选择时,Bash case语句可用于简化复杂的条件。使用case语句而不是嵌套的if语句将让您使bash脚本更易读,更易于维护。
Bash case语句与Javascript或C switch语句具有类似的概念。主要区别在于,与C switch语句不同,Bash case语句一旦找到一个并执行与该模式关联的语句,就不会继续搜索模式匹配。
在本教程中,我们将介绍Bash案例语句的基础知识,并向您展示如何在shell脚本中使用它们。
case语法
Bash case语句采用以下形式:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- 每个case语句都以
case
关键字后跟case表达式和关键字开头in
。该语句以esac
关键字结尾。 - 您可以使用由
|
运算符分隔的多个模式。)
终止模式列表。 - 模式可以包含特殊字符。
- 模式及其相关命令称为子句。
- 每个条件必须以
;;
结束。 - 执行与匹配表达式的第一模式相对应的命令。
- 通常的做法是使用通配符星号(
*
)作为最终模式来定义默认情况。这种模式总是会匹配的。 - 如果没有匹配的模式,则返回状态为零。否则,返回状态是执行的命令的退出状态。
case示例
以下是在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
Lithuania)
echo -n "Lithuanian"
;;
Romania | Moldova)
echo -n "Romanian"
;;
Italy | "San Marino" | Switzerland | "Vatican City")
echo -n "Italian"
;;
*)
echo -n "unknown"
;;
esac
将自定义脚本另存为文件并从命令行运行它。
bash languages.sh
该脚本将要求您输入国家/地区。例如,如果键入“Lithuania”,它将匹配第一个模式,并且echo
将执行该子句中的命令。
该脚本将打印以下输出:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
如果您输入的国家/地区与默认通配符星号符号之外的任何其他模式都不匹配,那么让我们指定为阿根廷,该脚本将在默认子句中执行echo命令。
Enter the name of a country: Argentina
The official language of Argentina is unknown
结论
到目前为止,您应该很好地理解如何编写bash case语句。它们通常用于从命令行将参数传递给shell脚本。例如,init脚本使用case语句来启动,停止或重新启动服务。
如果您有任何问题或反馈,请随时发表评论。
如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持