Bash 如何在switch case语句中排除某些情况?

Bash 如何在switch case语句中排除某些情况?,bash,shell,case-statement,Bash,Shell,Case Statement,在上面,我对案例2和3重复“do C”。除了这种冗余,我有没有办法定义一个适用于所有情况的情况,除了情况1或适用于情况2、3、5的情况,基本上是我想要的任何情况 比如: allExceptCase1或Only2,3,5,而不是其他的在这里,我用两个值和另一个默认子句讨论了一种情况 option="${1}" case ${option} in 1) do A do B ;;

在上面,我对案例2和3重复“do C”。除了这种冗余,我有没有办法定义一个适用于所有情况的情况,除了情况1或适用于情况2、3、5的情况,基本上是我想要的任何情况 比如:
allExceptCase1或Only2,3,5,而不是其他的

在这里,我用两个值和另一个默认子句讨论了一种情况

option="${1}"
        case ${option} in
                1) do A
                   do B 
        ;;
                2) do A
                   do B
                   do C 
                ;;
        3) do A
           do B
           do C
        ;;
        esac
RTFM:


在这里,我用两个值和另一个default子句讨论了一种情况

option="${1}"
        case ${option} in
                1) do A
                   do B 
        ;;
                2) do A
                   do B
                   do C 
                ;;
        3) do A
           do B
           do C
        ;;
        esac
RTFM:

case语句中的每个选项都是独立的,但它们是由shell模式定义的。因此,您可以这样做:

case ${option} in
  1) do A
     do B 
     ;;
  2|3) do A
       do B
       do C 
      ;;
   *) do D
      ;;
esac
您也可以嵌套case语句,因此也可以这样做:

case ${option} in
  1) do A
     do B 
  ;;
  [23])
     do A
     do B
     do C 
  ;;
esac
case ${option} in
  [123])
    do A
    do B 
    case ${option} in
      [23]) do C 
      ;;
    esac
  ;;
esac
如果您愿意假设${option}始终为1、2或3,那么您也可以这样做:

case ${option} in
  1) do A
     do B 
  ;;
  [23])
     do A
     do B
     do C 
  ;;
esac
case ${option} in
  [123])
    do A
    do B 
    case ${option} in
      [23]) do C 
      ;;
    esac
  ;;
esac
case语句中的每个选项都是独立的,但它们是由shell模式定义的。因此,您可以这样做:

case ${option} in
  1) do A
     do B 
     ;;
  2|3) do A
       do B
       do C 
      ;;
   *) do D
      ;;
esac
您也可以嵌套case语句,因此也可以这样做:

case ${option} in
  1) do A
     do B 
  ;;
  [23])
     do A
     do B
     do C 
  ;;
esac
case ${option} in
  [123])
    do A
    do B 
    case ${option} in
      [23]) do C 
      ;;
    esac
  ;;
esac
如果您愿意假设${option}始终为1、2或3,那么您也可以这样做:

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

非常感谢。嵌套选项特别有用,因为我的每个案例都有一些独特的语句和一些常见的语句。谢谢!嵌套选项特别有用,因为我的每个案例都有一些独特的语句和一些常见的语句。