Bash Case说明
评论 0
浏览 0
2019-03-01
当你有多个不同的选择时,bash的case
语句一般用于简化复杂的条件。使用case
语句而不是嵌套的if
语句会使你的bash脚本更易读,更容易维护。
Bash case
语句与Javascript或C switch
语句有类似的概念。主要的区别是,与C switch
语句不同,Bash case
语句在找到模式匹配并执行了与该模式相关的语句后,就不再继续搜索。
在本教程中,我们将介绍Bash case
语句的基本知识,并向你展示如何在你的shell脚本中使用它。
case
语句句法
Bash case
语句的形式如下。
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- 每个
case
语句以case
关键字开始,接着是case表达式和in
关键字。语句以esac
关键字结束。 - 你可以使用由
|
操作符分隔的多个模式。)
操作符可以终止一个模式列表。 - 一个模式可以有特殊的字符 。
- 一个模式及其相关的命令被称为一个子句。
- 每个子句都必须以
;;
结尾。 - 与第一个匹配表达式的模式相对应的命令将被执行。
- 使用通配符星号(
*
)作为最后的模式来定义默认情况,是一种常见的做法。这个模式将始终匹配。 - 如果没有匹配的模式,返回状态为0。否则,返回状态是所执行命令的退出状态。
个案陈述实例
下面是一个在bash脚本中使用case
语句的例子,它将打印一个给定国家的官方语言。
languages.sh
#!/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
如果你输入一个国家,除了默认的通配符星号之外,不匹配任何其他模式,比方说Argentina,脚本会在默认子句里面执行echo
命令。
输出
Enter the name of a country: Argentina
The official language of Argentina is unknown
总结
现在你应该对如何编写bash case
语句有了一定的了解。它们通常被用来从命令行向shell脚本传递参数。例如,init脚本就是用case
语句来启动、停止或重新启动服务。
如果你有任何问题或反馈意见,请随时留言。
0 个评论