Linux shell script switch...case All In One
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
shell script REPL
#!/bin/bash
export USER="pi"
echo "user = $USER"
# echo "\$1 = $1"
# export N=1
export N=3
case "$N" in
1)
echo 'case 1'
;;
2)
echo 'case 2'
;;
*)
echo 'default case 数字 *'
;;
esac

https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash
shell script shebang env
hash bang env
#!\usr\bin\env bash ❌
#!\usr\bin\env bash
# ❌

#!/usr/bin/env ✅
#!/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
https://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html
https://unix.stackexchange.com/questions/29608/why-is-it-better-to-use-usr-bin-env-name-instead-of-path-to-name-as-my
https://www.baeldung.com/linux/bash-shebang-lines
https://stackoverflow.com/questions/43793040/how-does-usr-bin-env-work-in-a-linux-shebang-line
refs
https://www.runoob.com/linux/linux-shell-process-control.html
©xgqfrms 2012-2021
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
未经授权禁止转载,违者必究!