如何在switch case语句中执行特定情况或排除个案(shell脚本)

时间:2016-04-25 20:18:13

标签: bash shell unix switch-statement case

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

上面,我正在为案例2&重复'做C' 3.有没有一种方法可以定义适用于所有情况的案例,除了案例1或适用于案例2,3,5的案例)(基本上以我想要的情况为准) 喜欢: allExceptCase1)Only2,3,5AndNotTheOthers)

2 个答案:

答案 0 :(得分:2)

我在这里介绍了一个包含两个值的案例和另一个"默认"子句。

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

答案 1 :(得分:2)

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

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}始终是123,那么您也可以这样做:

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