「4月日新计划更文活动」
case语句
运行方式
case ... esac为多选择语句,属于一种多分支选择结构,每个case分支用右边圆括号开始,在case语句中会将variable的值与模式中的每个值相比较,如果过与某个value的值相等,则执行该value所对应的一组语句,当遇到;;则跳出case语句,如果没有任何一个值与variable相匹配,则执行*后面的一组语句
语句格式
case variable in
模式1)
command1;;
模式2|模式3)
command2;;
*)
default_command;;
esac
变量名
- 在case语句中,variable通常是一个变量,然而它通常是需要被匹配的参数或用户输入
模式
- case语句中的模式,用于匹配变量名的取值。模式可以是简单的字符串,也可以是复杂的正则表达式,举例:
-
*匹配任意文字,包括空白字符?匹配任意单个字符[...]匹配方括号中任意一个字符
Command
- case语句中的command,即为满足匹配模式时需要执行的命令,可以有多个,但是必须要以分号
;;隔开
Default command
- 在case语句中,只有当所有模式都不匹配,才会执行最后一个
*后面的默认命令
#!/bin/bash
# 读取用户输入并保存到变量name中
echo "请输入你的名字:"
read name
# case语句开始
case $name in
John)
echo "你好,John!";;
Mary|Marylin)
echo "你好,Mary/Marylin!";;
[A-Z]*)
echo "你的名字以大写字母开头!";;
[a-z]*)
echo "你的名字以小写字母开头!";;
*)
echo "很遗憾,我不认识你!";;
esac
# 脚本结束
echo "感谢使用本脚本!"
注意:
- 对于变量名
variable,可以使用双引号,也可以不使用 - 每个case子句中的条件测试部分,都以右括号"
)"结束 - 每个case子句都以一对分号“
;;”作为结束符。 - 在脚本执行的过程中,当遇到一对分号时,会跳过当前case子句后面的所有的case子句,包括
*所对应的子句,执行esac子句后面的其他的语句。 - case语句结构以
esac结尾。与fi结尾一样,都是以前面一个单词的所有字母的逆序排列作为结束标记。