如何在 switch case 语句中排除某些情况?
How do I exclude certain cases in a switch case statement?
option=""
case ${option} in
1) do A
do B
;;
2) do A
do B
do C
;;
3) do A
do B
do C
;;
esac
以上,我对案例 2 和案例 3 重复 'do C'。除了这种冗余,有没有一种方法可以定义适用于所有案例的案例,案例 1 或适用于的案例除外case 2,3,5)(基本上是我想要的那种情况)
像:
allExceptCase1)
或 Only2,3,5AndNotTheOthers)
在这里,我介绍了一个具有两个值和另一个 "default" 子句的案例。
case ${option} in
1) do A
do B
;;
2|3) do A
do B
do C
;;
*) do D
;;
esac
RTFM: (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html)
Stack: bash switch case matching multiple conditions
case
语句中的每个选项都是独立的,但它们由 shell 模式 定义。因此你可以这样做:
case ${option} in
1) do A
do B
;;
[23])
do A
do B
do C
;;
esac
你也可以嵌套 case 语句,所以你也可以这样做:
case ${option} in
[123])
do A
do B
case ${option} in
[23]) do C
;;
esac
;;
esac
如果您愿意假设 ${option}
总是 1
、2
或 3
,那么您也可以这样做:
do A
do B
case ${option} in
[23])
do C
;;
esac
option=""
case ${option} in
1) do A
do B
;;
2) do A
do B
do C
;;
3) do A
do B
do C
;;
esac
以上,我对案例 2 和案例 3 重复 'do C'。除了这种冗余,有没有一种方法可以定义适用于所有案例的案例,案例 1 或适用于的案例除外case 2,3,5)(基本上是我想要的那种情况)
像:
allExceptCase1)
或 Only2,3,5AndNotTheOthers)
在这里,我介绍了一个具有两个值和另一个 "default" 子句的案例。
case ${option} in
1) do A
do B
;;
2|3) do A
do B
do C
;;
*) do D
;;
esac
RTFM: (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html)
Stack: bash switch case matching multiple conditions
case
语句中的每个选项都是独立的,但它们由 shell 模式 定义。因此你可以这样做:
case ${option} in
1) do A
do B
;;
[23])
do A
do B
do C
;;
esac
你也可以嵌套 case 语句,所以你也可以这样做:
case ${option} in
[123])
do A
do B
case ${option} in
[23]) do C
;;
esac
;;
esac
如果您愿意假设 ${option}
总是 1
、2
或 3
,那么您也可以这样做:
do A
do B
case ${option} in
[23])
do C
;;
esac