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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux自动重启tomcat脚本分享

    linux自动重启tomcat脚本分享

    linux自动重启tomcat脚本分享,大家参考使用吧
    2013-12-12
  • 详谈linux中sar的使用方法

    详谈linux中sar的使用方法

    下面小编就为大家带来一篇详谈linux中sar的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • vim命令汇总

    vim命令汇总

    本文主要介绍了vim命令汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Shell脚本数组用法小结

    Shell脚本数组用法小结

    这篇文章主要介绍了Shell脚本数组用法小结,本文讲解了数组声明、数组遍历、获取数组长度、删除数组元素、数组切片等内容,需要的朋友可以参考下
    2014-09-09
  • 用expect实现的自动登录到多台服务器的shell脚本

    用expect实现的自动登录到多台服务器的shell脚本

    自动登录到多台服务器的shell脚本,用expect来实现的一段代码,需要的朋友可以参考下
    2013-02-02
  • Shell脚本实现简单分割字符串

    Shell脚本实现简单分割字符串

    这篇文章主要介绍了Shell脚本实现简单分割字符串,本文讲解使用CUT命令实现以逗号、分号或其它分隔符来切割字符串,需要的朋友可以参考下
    2015-02-02
  • Linux Shell 如何获取参数的方法

    Linux Shell 如何获取参数的方法

    这篇文章主要介绍了Linux Shell 如何获取参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Linux自定义防误删脚本的思路与测试

    Linux自定义防误删脚本的思路与测试

    相信很多朋友都遇到过在linux下误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾,下面这篇文章主要给大家介绍了关于Linux自定义防误删脚本的思路与测试的相关资料,需要的朋友可以参考下
    2021-09-09
  • Linux中cat命令的使用详解

    Linux中cat命令的使用详解

    cat 命令的用途不仅仅是显示文件内容,还可以打印文本文件的文件内容,下面就为大家详细介绍一下Linux中cat命令的具体用法,需要的小伙伴可以了解一下
    2023-08-08
  • linux shell数据重定向(输入重定向与输出重定向)详细分析

    linux shell数据重定向(输入重定向与输出重定向)详细分析

    这篇文章主要介绍了linux shell数据重定向(输入重定向与输出重定向)详细分析,需要的朋友可以参考下
    2015-10-10

最新评论