如何在 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} 总是 123,那么您也可以这样做:

do A
do B 
case ${option} in
  [23])
     do C 
  ;;
esac