135 votes

Des points-virgules superflus à la fin d'une ligne dans les scripts shell?

J'ai un script shell qui contient les éléments suivants:

 case $1 in
    0 )
    echo $1 = 0;
    OUTPUT=3;;
    1 )
    echo $1 = 1;
    OUTPUT=4;;
    2 )
    echo $1 = 2;
    OUTPUT=4;;
esac

HID=$2;
BUNCH=16;
LR=.008;
 

Les points-virgules sont-ils complètement superflus dans l'extrait ci-dessus? Et y a-t-il une raison pour que certaines personnes utilisent le double point-virgule?

Il semble que les points-virgules ne sont qu'un séparateur, quelque chose que vous utiliseriez à la place d'une nouvelle ligne.

189voto

Ignacio Vazquez-Abrams Points 312628

Les points-virgules simples à la fin d'une ligne sont superflus, car la nouvelle ligne sert également de séparateur de commande. case spécifiquement besoin de doubles points-virgules à la fin de la dernière commande de chaque bloc modèle; voir help case pour plus de détails.

37voto

Michał Šrajer Points 9487

Selon man bash :

   metacharacter
         A character that, when unquoted, separates words.  One of the following:
         |  & ; ( ) < > space tab
  control operator
         A token that performs a control function.  It is one of the following symbols:
         || & && ; ;; ( ) | |& <newline>
 

Ainsi, ; peut être un métacaractère ou un opérateur de contrôle, tandis que ;; est toujours un opérateur de contrôle (dans le cas d'une commande).

Dans votre code particulier, tous les ; en fin de ligne ne sont pas nécessaires. Le ;; est cependant nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X