case 语句与模式匹配
针对多个值进行清晰分支处理。学习 case 语句、通配模式、多模式匹配,以及它为何优于冗长的 if-elif 链。
case 语句与模式匹配 是 CoddyKit 上的免费 Linux Command Line & Bash Scripting Mastery 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Command Line & Bash Scripting Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Command Line & Bash Scripting Mastery 课程共包含 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";;
esacGlob 模式
模式使用 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";;
esaccase 与 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 导师)并解锁 Linux Command Line & Bash Scripting Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Command Line & Bash Scripting Mastery 课程共包含 4 节课。
「case 语句与模式匹配」这节课中我会学到什么?
针对多个值进行清晰分支处理。学习 case 语句、通配模式、多模式匹配,以及它为何优于冗长的 if-elif 链。 你通过在浏览器中直接运行的动手代码来练习 Linux Command Line & Bash Scripting Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Linux Command Line & Bash Scripting Mastery 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Linux Command Line & Bash Scripting Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「case 语句与模式匹配」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Linux Command Line & Bash Scripting Mastery 课中编写并运行代码吗?
能。每节 Linux Command Line & Bash Scripting Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 循环结构(for、while)
- Bash 脚本中的函数
- 脚本参数与选项($@、$#、getopts)
- case 语句与模式匹配