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模式中,则执行默认命令序列。

当执行脚本时,没有指定变量的值,则执行默认命令序列。

常用于菜单选择,比如程序的启动,停止,重启,更新等,或者其他需要根据选择来执行对应选项下的命令的场景。

最新文章

  1. 获取Unity3D虚拟摄像机的图像
  2. android开发读书笔记
  3. while 循环 。。
  4. Permutations
  5. 第三方登录分享功能-ShareSDK for iOS适配问题记录
  6. Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用
  7. C语言(4)
  8. VTK 5.10.1 VS2010 Configuration 配置
  9. 通过注册表查看已安装 .NetFramework 版本
  10. js 的基础知识变量
  11. python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中
  12. JAVA并发,同步锁性能测试
  13. Eclipse之报错信息及其解决方案
  14. BZOJ 4078: [Wf2014]Metal Processing Plant [放弃了]
  15. ssm实现分页查询
  16. SVG---DEMO
  17. Es6的用法
  18. 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
  19. python 安装mysql报错
  20. 031 分布式中,zookeeper的部署

热门文章

  1. layer日期控件,开始时间不能大于结束时间
  2. Django框架的前奏(安装及介绍)
  3. Angular(一)
  4. 关于guava实现线程池
  5. [LC] 270. Closest Binary Search Tree Value
  6. day30-client上传比较大的数据给server
  7. python3下scrapy爬虫(第十二卷:解决scrapy数据存储大量数据时阻塞问题)
  8. ios UINavigationController 导航栏
  9. The Tower(ccpc吉林)
  10. 项目中spring容器加载的问题