Bash case 条件分支
case 将一个值依次与多个模式匹配,并执行第一个匹配分支。它适合处理命令参数、菜单选项和有限状态。
基本语法
case "$value" in
pattern_1)
commands
;;
pattern_2|pattern_3)
commands
;;
*)
default_commands
;;
esac- 模式使用 Shell 的模式匹配语法,不是正则表达式。
|可以在一个分支中连接多个模式。*通常作为最后的默认分支。;;结束当前分支,随后退出整个case。
处理命令参数
#!/usr/bin/env bash
case "${1-}" in
start)
echo "启动"
;;
stop)
echo "停止"
;;
status)
echo "查看状态"
;;
"")
echo "缺少参数:start、stop 或 status" >&2
exit 2
;;
*)
printf '未知参数:%s\n' "$1" >&2
exit 2
;;
esac${1-} 在没有第一个位置参数时展开为空字符串,也能配合 set -u 使用。
匹配多个写法
read -r -p "是否继续?[y/N] " answer
case "$answer" in
y|Y|yes|YES)
echo "继续"
;;
*)
echo "取消"
;;
esac公开笔记中不应硬编码真实服务器地址、账号或密钥路径。需要简化 SSH 连接时,优先在本地使用 ~/.ssh/config 管理主机别名。