Linux shell script switch...case All In One
case...in...esac
case ... esac
为多选择语句,与其他语言中的 switch ... case
语句类似,是一种多分支选择结构;
每个 case 分支用右圆括号开始,用两个分号 ;;
表示 break,即执行结束,跳出整个 case ... esac 语句,
esac(就是 case 反过来)作为结束标记。
可以用 case 语句匹配
一个值与一个模式,如果匹配成功,执行相匹配的命令。
case 工作方式如上所示,取值后面必须为单词 in
,每一模式必须以右括号
结束。
取值可以为变量
或常数
,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。
一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。
如果无
一匹配模式,使用星号 *
捕获该值,再执行后面的命令。
case ... esac
语法格式
case "值/变量" in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
# 模式 ...)
*)
command1
command2
...
commandN
;;
esac
exit 0;
demos
# export N=1
export N=3
# ✅
case "$N" in
1)
echo 'case 1 数字';;
2)
echo 'case 2 数字';;
*)
echo 'default case 数字 *'
echo 'error exit ❌'
exit 1
;;
esac
# export N=1
export N=3
# ✅
case "$N" in
1)
echo 'case 1 数字';;
2)
echo 'case 2 数字';;
*)
echo 'default case 数字 *'
echo 'error exit ❌'
exit 1
;;
esac
#!/usr/bin/env bash
# export USER="pi"
# echo "user = $USER"
# 参数 1
# echo "\$1 = $1"
# export N=1
# case 1 数字
# suceess exit ✅
export N=3
# default case 数字 *
# error exit ❌
# ✅
case "$N" in
1)
echo 'case 1 数字';;
2)
echo 'case 2 数字';;
*)
echo 'default case 数字 *'
echo 'error exit ❌'
exit 1
;;
esac
echo 'suceess exit ✅'
exit 0
<<EOF
# ✅
case "$N" in
1)
echo 'case 1'
;;
2)
echo 'case 2'
;;
*)
echo 'default case 数字 *'
;;
esac
EOF
hash bang env
#!\usr\bin\env bash
# ❌
#!/usr/bin/env bash
✅
export N=1
# case 1 数字
# suceess exit ✅
# ✅
case "$N" in
1)
echo 'case 1 数字';;
2)
echo 'case 2 数字';;
*)
echo 'default case 数字 *'
echo 'error exit ❌'
exit 1
;;
esac
echo 'suceess exit ✅'
exit 0