shell脚本case语句的具体使用

作者:

文章目录
  • Shell脚本中的case语句是一种多分支条件判断结构,主要用于匹配变量值与预设模式并执行对应的命令序列。
  • case 变量 in 模式1) 命令序列1 ;; 模式2|模式3) # 使用 | 分隔多个模式 命令序列2 ;; *) # 默认分支 默认命令序列 ;; esac
  • 1、case 语句以case开始,esac结束(反写) 2、每个模式分支以 “)” 结束,命令序列以 “;;” 终止 3、变量:待匹配的变量或表达式 4、模式:支持以下几种匹配模式    匹配任意长度字符:*          例如:*.jpg       表示匹配jpg扩展名    匹配单个字符:?              例如:go?d.jpg    表示匹配go“单个任意字母”d.jpg的文件    范围匹配:[…]              例如:[a-z]       表示匹配所有小写字母    范围不匹配:[!…]           例如:[!a-z]      表示排除所有小写字母    逻辑或:|                    例如:a|b         表示匹配 a 或 b
  • 1、模式匹配按顺序执行,首个匹配成功后即终止2、默认分支*)应放在最后,处理未匹配情况3、支持嵌套使用,可结合循环语句增强功能4、case适合离散值匹配,if更适合范围判断5、case语法比if结构更简洁直观、便于维护6、数据显示case语句比等效if-else链快3倍(处理10000次匹配仅需0.12秒) 到此这篇关于shell脚本case语句的具体使用的文章就介绍到这了,更多相关shell脚本case语句内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: shell中case的使用 Shell条件语句(条件测试、if语句、case语句) 详解shell脚本中的case条件语句介绍和使用案例 Shell编程之case语句实战(小结) shell脚本编程之case语句学习笔记 shell脚本中case条件控制语句的一个bug分析 一个shell for循环与case结合的脚本(监控程序状态) shell中case的用法学习笔记
  • 目录
    • 引言
    • 一、基础语法结构
    • 二、case 语法结构解释
    • 三、典型应用场景示范
      • 3.1、文件扩展名处理
      • 3.2、匹配英语单词
      • 3.3、数字/字母/符号分类
      • 3.4、管理服务脚本‌
    • 四、case语法特点

      Shell脚本中的case语句是一种多分支条件判断结构,主要用于匹配变量值与预设模式并执行对应的命令序列。

      case 变量 in
        模式1)
          命令序列1
          ;;
        模式2|模式3)  # 使用 | 分隔多个模式
          命令序列2
          ;;
        *)  # 默认分支
          默认命令序列
          ;;
      esac
      

      1、case 语句以case开始,esac结束(反写)

      2、每个模式分支以 “)” 结束,命令序列以 “;;” 终止

      3、变量:待匹配的变量或表达式

      4、模式:支持以下几种匹配模式
          匹配任意长度字符:*          例如:*.jpg       表示匹配jpg扩展名
          匹配单个字符:?              例如:go?d.jpg    表示匹配go“单个任意字母”d.jpg的文件
          范围匹配:[…]              例如:[a-z]       表示匹配所有小写字母
          范围不匹配:[!…]           例如:[!a-z]      表示排除所有小写字母
          逻辑或:|                    例如:a|b         表示匹配 a 或 b

      ---使用“*”匹配任意长度文件类型执行不同操作---
      case $file in
        *.tar.gz)  tar -zxvf $file ;;
        *.zip)     unzip $file ;;
        *.log)     grep "ERROR" $file ;;
      esac
      

      ---使用“?”单字符匹配和“范围不匹配”用户输---
      read -p "Please enter:" Var
      case ${Var} in
        go[!opq]d )    # 匹配go*d类单词(*只包含是1个字符长度),排除good、gopd、goqd这3个
          echo "Excluding o :${Var}"
          ;;
        go?d )         # 匹配 good、gopd、goqd
          echo "Include ? :${Var} "
          ;;
        *)             # 默认匹配
          echo "Other var : ${Var}"
          ;;
      esac
      

      ---使用“范围匹配”识别用户输入类型---
      read -p "输入字符: " Var
      case $Var in
        [0-9]) echo "匹配数字" ;;
        [a-zA-Z]) echo "匹配字母" ;;
        *) echo "其他特殊符号" ;;
      esac
      

      ---使用“逻辑或”管理nginx服务---
      case $1 in
        start|S) systemctl start nginx ;;
        stop|T)  systemctl stop nginx ;;
        restart|R) systemctl restart nginx ;;
        *) echo "Usage: $0 {start|stop|restart}" ;;
      esac
      

      1、模式匹配按顺序执行,首个匹配成功后即终止
      2、默认分支*)应放在最后,处理未匹配情况
      3、支持嵌套使用,可结合循环语句增强功能
      4、case适合离散值匹配,if更适合范围判断
      5、case语法比if结构更简洁直观、便于维护
      6、数据显示case语句比等效if-else链快3倍(处理10000次匹配仅需0.12秒)

      到此这篇关于shell脚本case语句的具体使用的文章就介绍到这了,更多相关shell脚本case语句内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • shell中case的使用
      • Shell条件语句(条件测试、if语句、case语句)
      • 详解shell脚本中的case条件语句介绍和使用案例
      • Shell编程之case语句实战(小结)
      • shell脚本编程之case语句学习笔记
      • shell脚本中case条件控制语句的一个bug分析
      • 一个shell for循环与case结合的脚本(监控程序状态)
      • shell中case的用法学习笔记

      站内搜索