运维Shell脚本小试牛刀(八): case模式忽略命令行参数大小写演示

news2024/10/11 4:30:06


 

运维Shell脚本小试牛刀(一)

运维Shell脚本小试牛刀(二)

运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解

运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客

Cenos7安装小火车程序动画

运维Shell脚本小试牛刀(五):until循环

运维Shell脚本小试牛刀(六): Shell中的函数认知

运维Shell脚本小试牛刀(七):从函数文件中调用另外一个脚本文件中函数


一: case语句使用命令行参数 


如通常根据命令行参数不同执行某个服务执行不同的分叉操作:备份数据库,web服务配置文件和一些其他文件到NAS存储设备等操作;

[root@www example10]# cat allInOutBackup.sh 
#!/bin/bash -
#==================================================================================================================
#
#
#                           FILE:  allInOneBackup.sh
#                           USAGE: ./allInOneBackup.sh
#    DESCRIPTION:
#        OPTIONS: -------
#        REQUIREMENTS: ---------

#        BUGS: ------
#        NOTES: -------- 
#        AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
#    ORGANIZATION:
#        CREATED: 2023-8-24 09:11:20    
#        REVISION: --------
#
#
#
#
#
#====================================================================================================================

case $1 in

   sql)
     echo "Running mysql backup using mysqldump tools............................"
     # Running the backup command or script....
   ;;
   
   sync)
     echo "Running backup using rsync tools......................................"
     # Running backup using rsync tools.
   ;;
   
   snap)
     echo "Running snapshot backup on storage..................................."
     # Running snapshot backup command.
   ;;

   *)
   
   echo "Backup utility"
   echo "Usage: `basename $0` (sql|sync|snap)"
   echo "      sql  : Run MYSQL backup utility."
   echo "      sync :  Run web server backup utility."
   echo "      snap :  Run snapshot backup utility..."
   ;;

esac 
 

二: 测试分叉命令 

注意: Linux下文件名时区分大小写的。同样case语句中的每个模式匹配也存在大小敏感的问题;当然如果我们想让脚本中的case语句对命令行参数的大小写不敏感,我们还是有办法解决的。一个比较简单的方法时使用如下命令开启 nocasematch选项(开启此选项后,当执行case或者"[[" 条件命令时,Shell以大小写不敏感的方式匹配模式): 

shopt -s nocasematch

[root@www example10]# ./allInOutBackup.sh 
Backup utility
Usage: allInOutBackup.sh (sql|sync|snap)
      sql  : Run MYSQL backup utility.
      sync :  Run web server backup utility.
      snap :  Run snapshot backup utility...
[root@www example10]# ./allInOutBackup.sh mysql
Backup utility
Usage: allInOutBackup.sh (sql|sync|snap)
      sql  : Run MYSQL backup utility.
      sync :  Run web server backup utility.
      snap :  Run snapshot backup utility...
[root@www example10]# ./allInOutBackup.sh sql
Running mysql backup using mysqldump tools............................
[root@www example10]# ./allInOutBackup.sh sync
Running backup using rsync tools......................................
[root@www example10]# ./allInOutBackup.sh snap
Running snapshot backup on storage...................................


[root@www example10]# ./allInOutBackup.sh SQL
Backup utility
Usage: allInOutBackup.sh (sql|sync|snap)
      sql  : Run MYSQL backup utility.
      sync :  Run web server backup utility.
      snap :  Run snapshot backup utility...

三: case使用命令行参数时忽略参数大小写 

[root@www example10]# cat allInOutBackupperlower.sh 
#!/bin/bash -
#==================================================================================================================
#
#
#                           FILE:  allInOneBackup.sh
#                           USAGE: ./allInOneBackup.sh
#    DESCRIPTION:
#        OPTIONS: -------
#        REQUIREMENTS: ---------

#        BUGS: ------
#        NOTES: -------- 
#        AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com
#    ORGANIZATION:
#        CREATED: 2023-8-24 09:11:20    
#        REVISION: --------
#
#
#
#
#
#====================================================================================================================

# 忽略命令行参数的大小写
shopt -s nocasematch
case $1 in

   sql)
     echo "Running mysql backup using mysqldump tools............................"
     # Running the backup command or script....
   ;;
   
   sync)
     echo "Running backup using rsync tools......................................"
     # Running backup using rsync tools.
   ;;
   
   snap)
     echo "Running snapshot backup on storage..................................."
     # Running snapshot backup command.
   ;;

   *)
   
   echo "Backup utility"
   echo "Usage: `basename $0` (sql|sync|snap)"
   echo "      sql  : Run MYSQL backup utility."
   echo "      sync :  Run web server backup utility."
   echo "      snap :  Run snapshot backup utility..."
   ;;

esac 
 

四:  测试输出 

[root@www example10]# ./allInOutBackupperlower.sh SQL
Running mysql backup using mysqldump tools............................
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud-GetWay 路由网关

接上文 SpringCloud-Hystrix 服务降级与熔断 微服务也是如此,不是所有微服务需要直接暴露给外部调用,就需要使用路由机制,添加一层防护,让所有的请求全部通过路由来转发到各个微服务,并转发给多个相同微服务实例&#…

Linux编辑器 VI VIM

vim 命令模式 插入模式 ex模式 \ 命令模式 /查找关键字后,按n键在找到的结果之前来换的切换、 EX模式

响应式布局(3种) + flex计算

响应式布局 1.媒体查询2.使用百分比、rem、vw、vh等相对单位来设置元素的宽度、高度、字体大小等1.rem与em2.vw、vh、vmax、vmin 3.Flexboxflexbox计算题 响应式布局是指同一个页面在不同屏幕尺寸下有不同的布局。 1.媒体查询 媒体查询是最基础的实现响应式的方式 使用media关键…

再见 MySQL 5.7 !

点击下方名片,设为星标! 回复“1024”获取2TB学习资源! 对从事互联网 IT 技术岗位的来说,数据库也是我们日常必备的技能之一,而 MySQL 数据库更是常见、常用的数据库之一。 根据 DB-Engines 的数据显示,MyS…

Matlab之DICOM(数字图像和通信医学)格式图像数据读取函数dicomread

一、DICOM是什么? DICOM是数字图像和通信医学格式的图像数据,在MATLAB中,可以使用dicomread函数读取DICOM格式的图像数据。 二、dicomread函数 使用方法如下: imageData dicomread(filename);其中,filename表示DI…

fail-safe 机制与 fail-fast 机制

Fail-fast 表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出 ConcurrentModificationException 异常,从而导致遍历失败,像这种情况 定义一个 Map 集合,使用 Iterator 迭代器进行数据…

live-server安装

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【算法专题突破】滑动窗口 - 长度最小的子数组(9)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:209. 长度最小的子数组 - 力扣(Leetcode) 要注意的是,题目给的是正整数, 而题目要求并不难理解,就是找最短的…

听说背包问题很难? 这篇总结篇来拯救你了

文章转自代码随想录 已经把背包问题都讲完了,那么现在要对背包问题进行总结一番。 背包问题是动态规划里的非常重要的一部分,所以我把背包问题单独总结一下,等动态规划专题更新完之后,我们还会在整体总结一波动态规划。 关于这…

【HCIE】02.IGP高级特性

OSPF转发地址 5类LSA报文格式 5类LSA有一个Forwarding address字段,防止次优路由产生 次有路径的产生 如图,A与C运行OSPF协议,A与B运行ISIS协议,现在将ISIS导入到了OSPF中,C去访问X默认会先经过ASBR即R1,…

【多线程】Timer任务定时器实现与盲等原子性问题的解决

目录 一、定时器 二、标准库中的Timer 三、代码实现 四、死锁 一、定时器 代码中的定时器通常是在一定的时间执行对应的代码逻辑 二、标准库中的Timer public static void main(String[] args){Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic…

【周末闲谈】如何利用AIGC为我们创造有利价值?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言AIGCAI写作AI绘画AI视频生成AI语音合成 前言 在此之…

持续集成/技术交付全流程流水线工具的设计与落地

文章目录 持续集成/技术交付全流程流水线工具的设计与落地概述工具架构设计主要功能模块代码库Jenkins 流水线代码构建自动化测试产品部署监控报警 使用方法步骤一:安装 Jenkins步骤二:创建 Jenkins 流水线步骤三:配置监控报警步骤四&#xf…

circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。

以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义…

生信教程|替代模型选择

摘要 由于教程时间比较久远,因此不建议实操,仅阅读以了解学习。 在运行基于可能性的系统发育分析之前,用户需要决定模型中应包含哪些自由参数:是否应该为所有替换假设单一速率(如序列进化的 Jukes-Cantor 模型&#xf…

新版DBeaver调整编辑窗口字体大小

网上有DBeave字体设置了,但看了下,目前最新版的已经更改了首选项分组,层级发生了变化,这里记录一下2022.08.21版的设置。 默认字体是10,比较小,改为11或更大会好看些。

强大的JTAG边界扫描(1):基本原理介绍

文章目录 1. 什么是边界扫描?2. JTAG硬件接口3. 边界扫描相关的软硬件4. 学习资料5. 总结 我是怎么了解到边界扫描的呢? 这就要从我淘到一块FPGA板卡的事情说起了。 前段时间我在某二手平台上淘了一块FPGA板子,它长这样: 板子的…

【虚拟机】

虚拟机 简介VMware Workstation简介下载安装许可证密钥 CentOS简介下载 创建新的虚拟机 简介 虚拟机(Virtual Machine,简称VM)是一种软件模拟的计算机,它在一台物理计算机上创建了一个独立的虚拟计算环境。这个虚拟环境可以运行操…

Spring-Cloud-Openfeign如何支持数据压缩?

HTTP压缩的原理 市面上主流的浏览器基本都支持gzip压缩,我们来看下服务端支持压缩的情况下,浏览器与服务端的通信过程: 第一步:浏览器发送Http request 给Web服务器, request头中有Accept-Encoding: gzip, deflate。(告诉服务器&#xff0…

学习Bootstrap 5的第九天

目录 列表组 基础的列表组 实例 活动的列表项 实例 禁用的列表项 实例 链接列表项 实例 移除列表边框 实例 带编号的列表组 实例 水平列表组 实例 多种颜色列表项 实例 多种颜色的链接列表项 实例 带徽章的列表组 实例 列表组案例 实例一 实例二 列表组…