shell中case的使用

 更新时间:2024年11月01日 08:36:29   作者:静听山水  
case语句是基于值的多分支选择结构,通过匹配表达式的值来执行相应的代码块,它的基本结构包括case关键字、待匹配的表达式、模式、代码块、默认分支(*)和结束关键字esac,感兴趣的可以了解一下

case 语句用于根据某个表达式的值执行不同的代码块。

基本结构

case 表达式 in
    模式1)
        代码块1
        ;;
    模式2)
        代码块2
        ;;
    ...
    *)
        默认代码块
        ;;
esac

详细解释

  • case 表达式 in

    • case 关键字开始一个 case 语句。
    • 表达式 是要匹配的值,可以是一个变量或一个固定的值。
    • in 关键字表示模式列表的开始。
  • 模式

    • 每个模式后面必须跟一个右括号 ),以标记该模式的结束。
    • 模式可以是单个值,也可以是多个值用 | 分隔,表示多个值都可以匹配同一个代码块。
  • 代码块

    • 每个模式对应的代码块是一系列命令,这些命令在匹配成功时会被执行。
    • 代码块以 ;; 结束,表示该分支的结束。
  • *)

    • *) 是默认分支,用于处理所有不匹配前面任何模式的情况。
    • 默认分支也是可选的,但通常建议包含默认分支以处理意外情况。
  • esac

    • esac 关键字结束整个 case 语句。

示例

示例 1:基本用法

#!/bin/bash

# 获取用户输入
read -p "请输入一个数字 (1-7): " num

# 根据输入的数字输出相应的星期几
case $num in
    1)
        echo "星期一"
        ;;
    2)
        echo "星期二"
        ;;
    3)
        echo "星期三"
        ;;
    4)
        echo "星期四"
        ;;
    5)
        echo "星期五"
        ;;
    6)
        echo "星期六"
        ;;
    7)
        echo "星期日"
        ;;
    *)
        echo "无效的输入"
        ;;
esac

示例 2:多值匹配

#!/bin/bash

# 获取用户输入
read -p "请输入一个字母 (a-z): " letter

# 根据输入的字母输出相应的信息
case $letter in
    a|e|i|o|u)
        echo "这是一个元音字母"
        ;;
    b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z)
        echo "这是一个辅音字母"
        ;;
    *)
        echo "无效的输入"
        ;;
esac

示例 3:范围匹配

#!/bin/bash

# 获取用户输入
read -p "请输入一个数字 (1-100): " num

# 根据输入的数字输出相应的范围
case $num in
    [1-9])
        echo "数字在 1 到 9 之间"
        ;;
    [1-9][0-9])
        echo "数字在 10 到 99 之间"
        ;;
    100)
        echo "数字是 100"
        ;;
    *)
        echo "无效的输入"
        ;;
esac

特殊用法

  • 通配符

    • 可以使用通配符 * 和 ? 进行模糊匹配。
    • * 匹配任意长度的任意字符。
    • ? 匹配单个任意字符。
  • 复合模式

    • 可以使用括号 () 包含多个模式,形成复合模式。

示例 4:通配符匹配

#!/bin/bash

# 获取用户输入
read -p "请输入一个文件名: " filename

# 根据输入的文件名输出相应的信息
case $filename in
    *.txt)
        echo "这是一个文本文件"
        ;;
    *.jpg|*.jpeg|*.png)
        echo "这是一个图片文件"
        ;;
    *)
        echo "未知类型的文件"
        ;;
esac

总结

case 语句是一种强大的条件控制结构,适用于多种场景,特别是当需要根据多个可能的值执行不同操作时。通过合理使用模式匹配和默认分支,可以编写出简洁且易于维护的脚本。

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

相关文章

  • Shell脚本如何逐行处理文本文件

    Shell脚本如何逐行处理文本文件

    这篇文章主要给大家介绍了关于Shell脚本如何逐行处理文本文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 监控php-fpm并自动重启服务的shell脚本

    监控php-fpm并自动重启服务的shell脚本

    这篇文章主要介绍了监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务,需要的朋友可以参考下
    2014-05-05
  • mac使用Shell(终端)SSH连接远程服务器的方法

    mac使用Shell(终端)SSH连接远程服务器的方法

    这篇文章主要介绍了mac使用Shell(终端)SSH连接远程服务器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • shell自动拉取镜像并运行容器的shell脚本

    shell自动拉取镜像并运行容器的shell脚本

    本文主要介绍了shell自动拉取镜像并运行容器的shell脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • linux中shell脚本实现下载完关机

    linux中shell脚本实现下载完关机

    本文给大家分享的是个人在实际应用中制作的一个小程序,十分的实用,推荐给大家,有需要的小伙伴可以参考下。
    2015-03-03
  • shell脚本实现批量测试局域网主机是否在线

    shell脚本实现批量测试局域网主机是否在线

    这篇文章主要介绍了shell脚本实现批量测试局域网主机是否在线,效果是:主机在线显示绿色,主机离线显示红色结果,需要的朋友可以参考下
    2014-12-12
  • Linux查看端口、进程情况及kill进程的方法

    Linux查看端口、进程情况及kill进程的方法

    下面小编就为大家带来一篇Linux查看端口、进程情况及kill进程的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • shell递归输出文件名和目录名的方法

    shell递归输出文件名和目录名的方法

    今天小编就为大家分享一篇shell递归输出文件名和目录名的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • linux find命令将查找到的文件批量删除方法

    linux find命令将查找到的文件批量删除方法

    这篇文章主要介绍了linux find命令将查找到的文件批量删除,文中给大家补充介绍了Linux中find三种删除方式,常用于crontab定时任务和shell脚本,需要的朋友可以参考下
    2022-12-12
  • Shell全局变量、局部变量与特殊变量的具体使用

    Shell全局变量、局部变量与特殊变量的具体使用

    本文主要介绍了Shell全局变量、局部变量与特殊变量的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论