阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

流程控制-case语句

386次阅读
没有评论

共计 2291 个字符,预计需要花费 6 分钟才能阅读完成。

一、条件循环语句 -case

在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。

1.1、case 介绍

特点:根据给予的不同条件执行不同的代码块

比如你去相亲:你会在脑子里出现以下的预案:第一眼看到对方父亲,你应该说:伯父好 第一眼看到对方母亲,你应该说:伯母好 第一眼看到对方奶奶,你应该说:奶奶好。。。。而这个例子中触发就是你第一眼看到了对方的谁,预案则是叫什么称呼。再来说一个计算机的相关例子 --- 监控内存使用率 内存使用率低于 80%,脚本输出:绿色字体的 Memory use xx% 内存使用率大于 80% 小于 90%,脚本输出:黄色字体的 Memory use xx% 内存使用大于 90%,脚本输出:红色字体的 Memory use xx%

1.2、case 语法

case $var in 定义变量;var 代表是变量名 pattern 1) 模式 1; 用 | 分割多个模式,相当于 or command1 需要执行的语句 ;; 两个分号代表命令结束 pattern 2) command2 ;; pattern 3) command3 ;; *) default,不满足以上模式,默认执行 *) 下面的语句 command4 ;; esac esac 表示 case 语句结束

二、案例

案例需求
写一个 nginx 启动管理脚本,可以实现 /etc/init.d/nginx start|stop|restart|status|reload
或者
systemctl start nginx

#!/bin/bash #Description: #Author: www.zutuanxue.com #Created Time: #nginx service manage script #variables nginx_install_doc=/usr/local/nginx proc=nginx nginxd=$nginx_install_doc/sbin/nginx pid_file=$nginx_install_doc/logs/nginx.pid # Source function library. if [-f /etc/init.d/functions];then . /etc/init.d/functions else echo "not found file /etc/init.d/functions" exit fi # 假如 pid 文件存在,那么统计一下 nginx 进程数量 if [-f $pid_file ];then nginx_process_id=`cat $pid_file` nginx_process_num=`ps aux |grep $nginx_process_id|grep -v "grep"|wc -l` fi #function start () {# 如果 nginx 没有启动直接启动,否则报错 已经启动 if [-f $pid_file ]&&[$nginx_process_num -ge 1 ];then echo "nginx running..." else # 如果 pid 文件存在,但是没有进程,说明上一次非法关闭了 nginx, 造成 pid 文件没有自动删除, 所以启动 nginx 之前先删除旧的 pid 文件 if [-f $pid_file ] && [$nginx_process_num -lt 1 ];then rm -f $pig_file # 可以使用两个函数,两种方法来执行命令,并返回执行结果 #1)daemon #2)action 建议这个,简单易用 #echo "nginx start `daemon $nginxd`" action "nginx start" $nginxd fi #echo "nginx start `daemon $nginxd`" action "nginx start" $nginxd fi } stop () {# 判断 nginx 启动的情况下才会执行关闭,如果没启动直接报错,或者提示用户服务没启动, 这里我直接报错的原因是为了给大家演示失败的输出 if [-f $pid_file ]&&[$nginx_process_num -ge 1 ];then action "nginx stop" killall -s QUIT $proc rm -f $pid_file else action "nginx stop" killall -s QUIT $proc 2>/dev/null fi } restart () { stop sleep 1 start } reload () {# 重载的目的是让主进程重新加载配置文件, 但是前提是服务必须开启 # 这里先判断服务是否开启,开启就执行加载,没有开启直接报加载错误 if [-f $pid_file ]&&[$nginx_process_num -ge 1 ];then action "nginx reload" killall -s HUP $proc else action "nginx reload" killall -s HUP $proc 2>/dev/null fi } status () {if [-f $pid_file ]&&[$nginx_process_num -ge 1 ];then echo "nginx running..." else echo "nginx stop" fi } #callable case $1 in start) start;; stop) stop;; restart) restart;; reload) reload;; status) status;; *) echo "USAGE: $0 start|stop|restart|reload|status";; esac

三、学习视频

视频:case 语句介绍
视频:job-Nginx 启动管理脚本
视频:函数与 case 知识图谱总结

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-09发表,共计2291字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7806752
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...