2016-04-25 30 views
1
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 

上面,我是在重複「做C」的情況下,2 & 3.不要這種冗餘的,是有辦法,我可以定義適用於所有的情況下,除非情況1的情況下,或適用於區分的情況下2,3,5)(基本上爲準情況下,我想) ,如: allExceptCase1)Only2,3,5AndNotTheOthers)如何執行具體案件或交換機case語句排除的情況下(shell腳本)

回答

2

case聲明中每一個選項是分開的,但它們是由外殼模式定義。因此,你可以這樣做:

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}將永遠是要麼12 ,或3,那麼你也可以這樣做:

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

謝謝!嵌套選項特別有用,因爲我的每個案例都有一些獨特的陳述和一些常見的陳述。 – Shruti

相關問題