2016-04-25 4 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 

Vor ausschließen, ich wiederhole ‚zu tun C‘ für Fall 2 & 3. Anstelle dieser Redundanz ist es eine Möglichkeit, ich kann definieren einen Fall, der, außer Fall 1 oder Fall für alle Fälle gilt, die 2,3,5) zu Fall gilt (im Grunde je nachdem, welcher Fall ich will) wie: allExceptCase1) OR Only2,3,5AndNotTheOthers)Wie kann ich bestimmte Fälle ausführen oder Fälle, in einem Schaltergehäuse Anweisung (Shell-Skript)

Antwort

2

Jede Option in einer case Aussage ist separat, aber sie werden von Shell Muster definiert. So ist diese Sie tun können:

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

können verschachtelt case-Anweisungen, auch, so können Sie auch dies tun könnte:

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

Wenn Sie bereit sind, anzunehmen, dass ${option} würde immer entweder 1, 2 oder 3, dann könnten Sie auch dies tun:

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

Thank you! Die Verschachtelungsoption ist besonders hilfreich, da jeder meiner Fälle einige eindeutige Anweisungen und einige allgemeine Anweisungen enthält. – Shruti

Verwandte Themen