shell 之 case。。。esac多分支选择
2024-08-29 06:39:05
case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认操作。
语法:
case 变量值 in
模式1)
命令序列1 ;;
模式2)
命令序列2 ;;
*)
默认命令序列
esac
注意:
1.在命令序列后一定要以 ;; 结束,最后一个命令序列也可不写。
2.在case分支写完之后,要以esac结束。
例子:
通过位置变量来获取赋值
[root@gameserver1 shell]# vim case_test.sh #!/bin/bash
case $1 in #用位置变量获取值
start)
echo "start";;
stop)
echo "stop";;
other)
echo "other";;
*) #默认命令序列
echo "默认命令序列"
esac
执行脚本,位置参数赋值start
[root@gameserver1 shell]# ./case_test.sh start
start #输出start
执行脚本,位置参数赋值stop
[root@gameserver1 shell]# ./case_test.sh stop
stop
执行脚本,位置参数赋值restart (case中没有定义对应的restart模式)
[root@gameserver1 shell]# ./case_test.sh restart
默认命令序列 #当赋值case中没有定义的模式时,则输出的 *)默认命令序列
执行脚本,位置参数不赋值
[root@gameserver1 shell]# ./case_test.sh
默认命令序列 #输出默认序列
总结:
当执行脚本时,变量值==模式,则执行对应模式下的命令序列。
当执行脚本时,变量值不存在case模式中,则执行默认命令序列。
当执行脚本时,没有指定变量的值,则执行默认命令序列。
常用于菜单选择,比如程序的启动,停止,重启,更新等,或者其他需要根据选择来执行对应选项下的命令的场景。
最新文章
- 获取Unity3D虚拟摄像机的图像
- android开发读书笔记
- while 循环 。。
- Permutations
- 第三方登录分享功能-ShareSDK for iOS适配问题记录
- Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用
- C语言(4)
- VTK 5.10.1 VS2010 Configuration 配置
- 通过注册表查看已安装 .NetFramework 版本
- js 的基础知识变量
- python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中
- JAVA并发,同步锁性能测试
- Eclipse之报错信息及其解决方案
- BZOJ 4078: [Wf2014]Metal Processing Plant [放弃了]
- ssm实现分页查询
- SVG---DEMO
- Es6的用法
- Exception in thread ";main"; java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, do
- python 安装mysql报错
- 031 分布式中,zookeeper的部署