Shell 流程控制 - case 多选择语句
简介
- 子句含右圆括号 " ) " 部分开始。
- 子句结束符号
- " ;; " :’ 结束 ’ ,以两个分号结尾,表示只执行当前子句中的关联命令,相当于执行后直接 结束。
- " ;;& " : ’ 继续匹配 ’ ,以两个分号与连字符结尾,表示当前子句的关联命令执行后,会继续去 匹配 后面子句,并执行关联的命令。
- " ;& " : ’ 继续执行 ’ ,继续执行下个子句的关联命令,不论是否匹配。
- case 语句 以 " case " 结束。
- 语法格式
case 值 in 分支1) action1 ;; 分支2) action2 ;; *) action3 esac
参考文档
- 官方文档:https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs
- 参看文章:https://www.runoob.com/linux/linux-shell-process-control.html
示例
- 只执行匹配到的第一个子句。
[root@ case]# cat test.sh #!/bin/bash case $1 in linux) echo "1" $1 ;; redhat) echo "2" $1 ;; *) echo "*" $1 esac [root@ case]# sh test.sh linux 1 linux [root@ case]# sh test.sh redhat 2 redhat [root@ case]# sh test.sh centos * centos [root@ case]#
- 继续匹配,并执行匹配到的子句中的命令。
[root@ case]# cat test.sh #!/bin/bash case $1 in linux) echo "1" $1 ;;& redhat) echo "2" $1 ;; *) echo "*" $1 ;; esac [root@ case]# sh test.sh linux 1 linux * linux [root@ case]#
- 继续执行下一个子句,不论是否匹配。
[root@ case]# cat test.sh #!/bin/bash case $1 in linux) echo "1" $1 ;& redhat) echo "2" $1 ;; *) echo "*" $1 ;; esac [root@ case]# sh test.sh linux 1 linux 2 linux [root@ case]#