当前位置: 首页 > news >正文

shell基础-case

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

基本结构

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

详细解释

  1. case 表达式 in

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

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

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

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

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

示例

示例 1:基本用法
#!/bin/bash# 获取用户输入
read -p "请输入一个数字 (1-7): " num# 根据输入的数字输出相应的星期几
case $num in1)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 ina|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

特殊用法

  1. 通配符

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

    • 可以使用括号 () 包含多个模式,形成复合模式。
示例 4:通配符匹配
#!/bin/bash# 获取用户输入
read -p "请输入一个文件名: " filename# 根据输入的文件名输出相应的信息
case $filename in*.txt)echo "这是一个文本文件";;*.jpg|*.jpeg|*.png)echo "这是一个图片文件";;*)echo "未知类型的文件";;
esac

总结

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


http://www.mrgr.cn/news/62726.html

相关文章:

  • c语言水仙花,超简单讲解
  • 速来!一篇笔记带你了解 MS Office 高频考点(Excel 篇)
  • Java 控制语句(3/30)
  • golang 服务注册与服务发现框架 入门与实践
  • Github 2024-10-24 Go开源项目日报 Top10
  • 【数据结构】快速排序(三种实现方式)
  • golang rocketmq开发
  • 谷歌seo发外链真的能提升排名吗?
  • ios上架流程
  • DBeaver24.2.3 中安装yashandb驱动
  • 淘宝API接口(item_search- 关键词搜索淘宝商品列表数据查询)
  • 基于单片机的智能家居排气扇系统设计
  • 外贸单证小技巧,Winseeing汇信外贸软件让制单事半功倍
  • Es 基础操作 增删改查
  • Spring Cloud Gateway
  • 深度学习常见面试题及答案(41~45)
  • 动态规划 —— 路径问题-下降路径最小和
  • 什么是x86架构,什么是arm架构
  • 算法竞赛——02基本算法
  • AI机西好用吗?有哪些实用功能?真实用户体验告诉你!
  • 网鼎杯2024青龙组官方资格赛wp
  • 接入AI后,开源项目顿时有趣了
  • JVM(HotSpot):finally块的相关问题
  • CSS网页布局综合练习(涵盖大多CSS知识点)
  • 台州ctf市赛reverse(easy_choice)超详细复现
  • 什么是决策树桩