next up previous contents index
suivant: Les boucles monter: Les structures de contrôle précédent: Les tests ("if")   Table des matières   Index

Choix multiples (case, switch)

C Shell Bourne Shell
   
Syntaxe
switch (nom) case nom in
case label1: label1)
commandes commandes
$\cdots$ $\cdots$
breaksw ;;
case label2: label2)
commandes commandes
$\cdots$ $\cdots$
breaksw ;;
default: *)
# tous les autres cas # tous les autres cas
commandes commandes
$\cdots$ $\cdots$
breaksw ;;
endsw esac
Remarques
Les labels suivant le "case" peuvent exprimer une alternative de type "ou" avec la notation "[]", ainsi : "case [oO][uU][iI]:" accepte "oui" et "OUI" ainsi que toutes les combinaisons possibles avec les minuscules et les majuscules. Les labels de chaque cas peuvent exprimer un alternative de type "ou" en étant séparés par le caractère "|", ainsi "oui|OUI)" accepte seulement les deux combinaisons suivantes : "oui" et "OUI".
Le branchement s'effectue sur une clause "case" en fonction de la valeur spécifiée entre parenthèses à l'instruction "switch". Les instructions sont exécutées jusqu'à ce que "breaksw" (ou "endsw") soit localisé. Le branchement s'effectue sur une clause "label)" en fonction de la valeur spécifiée entre les mots clef "case" et "in". Les instructions sont exécutées jusqu'à ce que ";;" (ou "esac") soit localisé.
Exemple
#!/bin/csh #!/bin/sh
switch ($MACHINE) case $MACHINE in
case "SUN": "SUN")
echo "Je suis sur Sun" echo "Je suis sur Sun."
breaksw ;;
case "SGI": "SGI")
echo "Je suis sur Silicon" echo "Je suis sur Silicon."
breaksw ;;
case "DEC": "DEC"|"HP"|"IBM")
case "HP": echo "Je suis sur DEC"
case "IBM": echo "Peut-etre ou HP"
echo "Je suis sur DEC" echo "Ou bien encore IBM."
echo "Peut-etre ou HP" ;;
echo "Ou bien encore IBM." *)
default: echo "Je suis en SH"
echo "Je suis en CSH" esac
endsw  


next up previous contents index
suivant: Les boucles monter: Les structures de contrôle précédent: Les tests ("if")   Table des matières   Index
baudry@esme.fr