0Pricing
DevOps Bootcamp · 课时

case 语句与模式匹配

针对多个值进行清晰分支处理。学习 case 语句、通配模式、多模式匹配,以及它为何优于冗长的 if-elif 链。

case 语句与模式匹配 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

为什么使用 case

当一个变量可能有许多取值时,冗长的 if/elif/elif 链会很难看。case 语句会将值与模式进行匹配,可读性高得多。

基本语法

case 代码块会将值与模式进行匹配,每个模式以 ) 结尾,其主体以 ;; 结束。整个代码块以 esac 结束。

case "$fruit" in
  apple) echo "red";;
  banana) echo "yellow";;
esac

默认分支

*) 模式可以匹配任何内容,充当类似 else 的兜底默认分支。

case "$cmd" in
  start) echo "starting";;
  stop) echo "stopping";;
  *) echo "unknown command";;
esac

匹配多个模式

使用 | 可在同一个分支中匹配多个模式。

case "$ans" in
  y|Y|yes) echo "Confirmed";;
  n|N|no) echo "Cancelled";;
esac

Glob 模式

模式使用 shell 通配,而不是正则表达式:* 匹配任意字符串,? 匹配任意单个字符,[...] 匹配一个字符类。

case "$file" in
  *.txt) echo "text file";;
  *.jpg|*.png) echo "image";;
esac

字符范围

方括号模式可以匹配范围,适合按首字母或数字进行分组。

case "$ch" in
  [a-z]) echo "lowercase";;
  [0-9]) echo "digit";;
esac

简单菜单

在由菜单驱动、由用户选择选项的脚本中,case 尤其适用。

read -p "Choice: " opt
case "$opt" in
  1) backup;;
  2) restore;;
  *) echo "Invalid";;
esac

case 与 if

对于复杂的布尔条件(范围、比较、多个变量),使用 if。当需要根据单个变量的值或模式进行分支时,使用 case。

为值加引号

为待测试的值("$var")加引号,以便安全处理空值或包含空格的值。

case "$input" in
  "") echo "empty";;
  *) echo "got: $input";;
esac

使用 ;;& 继续匹配

Bash 支持使用 ;;&,在匹配成功后继续测试后续模式,从而允许多个分支执行。

case "$f" in
  *.tar) echo "tar";;&
  *.gz) echo "gzip";;
esac

参数分派

一个常见的实际用途是根据脚本的第一个参数进行分派,从而实现类似 CLI 工具的子命令。

case "$1" in
  init) do_init;;
  build) do_build;;
  *) echo "usage: $0 {init|build}";;
esac

快速检查

测试您对本节内容的理解。

回顾

您学会了 case 语句:将值与 glob 模式匹配,使用 ;; 结束分支,使用 | 组合模式,使用 *) 作为默认分支,并在基于值和参数分派时,优先使用 case,而不是冗长的 if-elif 链。

常见问题解答

「case 语句与模式匹配」课时是免费的吗?

是的 — 「case 语句与模式匹配」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「case 语句与模式匹配」这节课中我会学到什么?

针对多个值进行清晰分支处理。学习 case 语句、通配模式、多模式匹配,以及它为何优于冗长的 if-elif 链。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「case 语句与模式匹配」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 循环结构(for、while)
  2. Bash 脚本中的函数
  3. 脚本参数与选项($@、$#、getopts)
  4. case 语句与模式匹配
← 返回 DevOps Bootcamp