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


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

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

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

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

Cenos7安装小火车程序动画

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

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

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

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

运维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............................
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java运维shell脚本一般使用Bash或者其他Shell语言来编写,主要是为了方便运维人员进行一些自动化操作,比如部署、备份、启动和停止等。下面给出一个Spring Boot项目的运维脚本示例: ```bash #!/bin/bash # 定义一些变量 APP_NAME="my-application" APP_HOME="/opt/${APP_NAME}" APP_JAR="${APP_HOME}/${APP_NAME}.jar" PID_FILE="${APP_HOME}/${APP_NAME}.pid" LOG_FILE="${APP_HOME}/${APP_NAME}.log" # 检查应用是否已经启动,如果已经启动则退出 if [ -f "${PID_FILE}" ]; then pid=$(cat "${PID_FILE}") if ps -p "${pid}" > /dev/null; then echo "${APP_NAME} is already running with PID ${pid}." exit 1; fi fi # 启动应用 nohup java -jar "${APP_JAR}" > "${LOG_FILE}" 2>&1 & pid=$! echo "${pid}" > "${PID_FILE}" echo "Started ${APP_NAME} with PID ${pid}." # 停止应用 function stop() { if [ -f "${PID_FILE}" ]; then pid=$(cat "${PID_FILE}") kill -TERM "${pid}" rm "${PID_FILE}" echo "Stopped ${APP_NAME} with PID ${pid}." else echo "${APP_NAME} is not running." fi } # 其他操作,比如备份、部署等 function backup() { # TODO: 备份操作 } function deploy() { # TODO: 部署操作 } # 根据传入的参数执行不同的操作 case "$1" in start) # 启动应用 ;; stop) # 停止应用 stop ;; restart) # 重启应用 stop sleep 5 start ;; backup) # 备份应用 backup ;; deploy) # 部署应用 deploy ;; *) echo "Usage: $0 {start|stop|restart|backup|deploy}" exit 1 esac ``` 这个脚本定义了一些变量,比如应用名称、应用目录、应用Jar包、PID文件和日志文件等。然后定义了一个`stop`函数用来停止应用,以及其他操作如备份和部署等。最后使用`case`语句来根据传入的参数执行不同的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值