【Linux】shell脚本实战-流程控制语句case
发布时间:2022-10-21 12:47:33 所属栏目:Linux 来源:
导读: 【Linux】shell脚本实战-流程控制语句case
前言
前面我们探讨过shell脚本中的if语句,单分支,双分支以及多分支的写法,今天我来看另一个流程控制语句case。
什么是case语句
控
前言
前面我们探讨过shell脚本中的if语句,单分支,双分支以及多分支的写法,今天我来看另一个流程控制语句case。
什么是case语句
控
|
【Linux】shell脚本实战-流程控制语句case 前言 前面我们探讨过shell脚本中的if语句,单分支,双分支以及多分支的写法,今天我来看另一个流程控制语句case。 什么是case语句 控制语句:用来实现对程序流程的选择、循环、转向和返回等进行控制; case 语句和 if…elif…else 语句一样都是多分支条件语句,不过和多分支 if 条件语句不同的是,case 语句只能判断一种条件关系,而 if 语句可以判断多种条件关系。 case语句适合用于多分支,多选择的情况,是一个多选选择语句。 case语句语法分析 case 变量名 in 值1) 指令1 ;; 值2) 指令2 ;; 值3) 指令3 ;; *) 指令3 ;; esac 中文范例,我们喜欢用中文例子来看编程: case “各位” in 找到好工作) 给父母买买买 ;; 天上掉金子) 给自己买买买 ;; 天上掉女朋友) 给女朋友买买买 *) 还是老老实实学习吧!! esac case语句的语法规范** 注意: 变量或者表达式后面的单词必须为in, 每个表达式或变量的值必须以右括号结束。 case实战案例1. 做出你的选择 #!/bin/bash read -p "Please choose yes/no: " cho ## 通过输入来确定变量 case $cho in yes) echo "Your choose is yes!" ### 如果你选择yes,就输出你的选择是正确的 ;; ## 所有结束的地方都是两个分号 no) echo "Your choose is no!" ;; *) ### 其他选项用*来表示 echo "Your choose is error!" ;; esac 返回执行结果: [root@ecs-c13b ~]# bash case1.sh Please choose yes/no: yes Your choose is yes! [root@ecs-c13b ~]# bash case1.sh Please choose yes/no: no Your choose is no! [root@ecs-c13b ~]# bash case1.sh Please choose yes/no: a Your choose is error! [root@ecs-c13b ~]# 2. 早饭吃什么 #!/bin/bash printf "%-5s %-10s\n" 序号 食物 printf "%-5s %-10s\n" 1 米饭 printf "%-5s %-10s\n" 2 包子 printf "%-5s %-10s\n" 3 油条 read -p "请选择你今天要吃什么: " num expr $num + 1 &> /dev/null ### 这里+1 判断是不是整数 if [ "$?" -ne 0 ];then ## $? 加“”,如果不等于零代表是不整数 echo "请输入数字{1|2|3}" exit 1 fi case $num in 1) echo "米饭一碗" ;; 2) echo "包子一份" ;; 3) echo "油条一份" ;; *) echo "这个有,有吗?那没有" ;; esac 执行返回结果: [root@ecs-c13b ~]# bash case2.sh 序号 食物 1 米饭 2 包子 3 油条 请选择你今天要吃什么: 1 米饭一碗 [root@ecs-c13b ~]# bash case2.sh 序号 食物 1 米饭 2 包子 3 油条 请选择你今天要吃什么: 2 包子一份 [root@ecs-c13b ~]# bash case2.sh 序号 食物 1 米饭 2 包子 3 油条 请选择你今天要吃什么: 9 这个有,有吗?那没有 [root@ecs-c13b ~]# 3. apache服务启动脚本实战 #!/bin/bash case $1 in start) systemctl $1 httpd ps aux|grep httpd echo "httpd start" ;; stop) systemctl $1 httpd ps aux|grep httpd echo "httpd stop" ;; status) systemctl $1 httpd ;; restart) systemctl $1 httpd echo "httpd restart" ;; *) echo "USAGE: $0 start|stop|restart" esac 执行结果: [root@ecs-c13b ~]# bash case3.sh status ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2020-08-06 08:10:17 CST; 15s ago Docs: man:httpd(8) man:apachectl(8) 总结 case语句是有限的条件,如果条件太多linux语句,写起来也麻烦。case语句要结合if条件语句,两者可以改写。 知识case有时候逻辑更清晰一点, if条件语句相对而言显得虚幻。 (编辑:云计算网_汕头站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330478号