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 laquelle certaines personnes utilisent des points-virgules doubles?
Il semble que les points-virgules ne soient qu'un séparateur, quelque chose que vous utiliseriez à la place d'une nouvelle ligne.
Selon
man bash
:Ainsi, le
;
peut être un méta-caractère ou un opérateur de contrôle, tandis que le;;
est toujours un opérateur de contrôle (dans la commande case).Dans votre code particulier, tout
;
ce qui est en fin de ligne n'est pas nécessaire. Le;;
est cependant nécessaire.la source
;
et;;
? Je ne suis pas assez familier avec l'analyse syntaxique de BASH pour connaître la différence pratique entre ce que BASH appelle un «métacaractère» et ce qu'il appelle un «opérateur de contrôle».Dans le cas particulier de find,
;
est utilisé pour terminer les commandes appelées par -exec. Voir la réponse de @kenorb à cette question .la source
@ Opensourcebook-Amit
les retours à la ligne équivalent à un point-virgule unique
;
sur le terminal ou dans le script shell.Voir les exemples ci-dessous:
Sur le terminal:
Sur le script shell:
Mais je ne suis pas d'accord avec le commentaire qui
&
équivaut à une nouvelle ligne ou à un point-virgule unique&
est exécuter des commandes en arrière-plan également un séparateur de commande mais ne fonctionne pas comme point-virgule ou nouvelle ligne.la source
@Ignacio Vazquez-Abrams
En fait, ce n'est pas tout à fait exact, les points-virgules simples à la fin d'une ligne ne sont pas superflus et ne sont certainement pas la même chose que les nouvelles lignes.
À partir du manuel de référence de Bash
Les commandes séparées par une "nouvelle ligne" peuvent être exécutées en parallèle lorsque les commandes séparées par un point-virgule sont toujours exécutées séquentiellement
la source
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
Donc ce que vous avez cité à propos du point-virgule s'applique également aux retours à la ligne.&
non pas le\n
. Dans un commentaire, il est indiqué qu'il peut ignorer le point-virgule car, apparemment,&
est également un séparateur de commande tout comme;
et\n
.