shell脚本case语句的具体使用

 更新时间:2025年08月22日 11:11:24   作者:白小书  
Shell脚本中的case语句是一种多分支条件判断结构,主要用于匹配变量值与预设模式并执行对应的命令序列,下面就来具体介绍一下case语句的具体使用

引言

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

一、基础语法结构

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

二、case 语法结构解释

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

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

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

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

三、典型应用场景示范

3.1、文件扩展名处理

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

3.2、匹配英语单词

---使用“?”单字符匹配和“范围不匹配”用户输---
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

3.3、数字/字母/符号分类

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

3.4、管理服务脚本‌

---使用“逻辑或”管理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

四、case语法特点

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

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

相关文章

  • shell批量curl接口脚本的简单实现方法

    shell批量curl接口脚本的简单实现方法

    这篇文章主要跟大家介绍了关于shell批量curl接口脚本的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用shell具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • Shell脚本中实现更新PHP5

    Shell脚本中实现更新PHP5

    这篇文章主要介绍了Shell脚本中实现更新PHP5,本文直接给出实现代码,需要的朋友可以参考下
    2015-04-04
  • Linux Shell脚本编程的注意事项

    Linux Shell脚本编程的注意事项

    这篇文章主要介绍了Linux下Shell脚本编程的一些注意事项,如编程风格、命名风格等,需要的朋友可以参考下
    2014-03-03
  • 使用SHC对Shell脚本进行封装和源码隐藏的方法

    使用SHC对Shell脚本进行封装和源码隐藏的方法

    shc是一个由C语言编写的Shell脚本加密程序,它可以将你的脚本编译成二进制可执行文件,从而隐藏源码,这篇文章主要介绍了如何使用SHC对Shell脚本进行封装和源码隐藏,需要的朋友可以参考下
    2023-10-10
  • shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    shell脚本中main函数中$#获取不到脚本传入参数个数浅析

    Linux的shell脚本,有时候我们在运行shell脚本时会给脚本传入参数,出于逻辑上的严谨,在脚本中可能会做一些逻辑判断或处理,例如判断脚本传入参数的个数,这篇文章主要介绍了shell脚本中main函数中$#获取不到脚本传入参数个数浅析,需要的朋友可以参考下
    2024-03-03
  • 一文掌握Linux命令lsscsi

    一文掌握Linux命令lsscsi

    想要弄明白lsscsi命令,首先我们必须搞清楚什么是SCSI,以及常见的硬盘接口,常用的硬盘参数,今天通过本文给大家介绍下Linux命令lsscsi,需要的朋友可以参考下
    2022-09-09
  • bash shell 重定向输入和输出的例子

    bash shell 重定向输入和输出的例子

    这篇文章主要介绍了bash shell 重定向输入和输出的相关资料,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 并发数据库压力测试的shell脚本代码

    并发数据库压力测试的shell脚本代码

    并发数据库压力测试的shell脚本,有需要的朋友可以参考下
    2013-02-02
  • Linux Shell脚本系列教程(六):数组和关联数组

    Linux Shell脚本系列教程(六):数组和关联数组

    这篇文章主要介绍了Linux Shell脚本系列教程(六):数组和关联数组,本文讲解了什么是数组和关联数组、定义打印普通数组、定义打印关联数组等内容,需要的朋友可以参考下
    2015-06-06
  • shell脚本通过expect实现自动单边无密登录功能

    shell脚本通过expect实现自动单边无密登录功能

    最近做项目需要实现单边无密登录功能,接下来小编给大家分享shell脚本通过expect实现自动单边无密登录功能,一起看看吧
    2017-01-01

最新评论