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 totalement superflus dans le fragment 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, que vous utiliseriez à la place d'une nouvelle ligne.
Les points-virgules simples à la fin d'une ligne sont superflus, car la nouvelle ligne est également un séparateur de commande. case
a 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.
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, le ;
peut être un métacaractère ou un opérateur de contrôle, tandis que le ;;
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 nécessaire cependant.
Dans le cas particulier de find, est utilisé pour mettre fin aux commandes invoquées par -exec. Voir la réponse de @kenorb à cette question .
@ Opensourcebook-Amit
les nouvelles lignes équivalentes à un seul point-virgule (;) sur un terminal ou dans un script Shell.
Voir les exemples ci-dessous:
Sur termainal: [Test root @ server] # ls; pwd;
Sur le script shell:
[root @ server test] # cat test4.sh
echo "Nom d'utilisateur actuel:" whoami
echo -e "\ nDate en cours:"; date;
[test root @ server] #
Mais je ne suis pas d'accord avec le commentaire qui équivaut à newline ou à un point-virgule
& est exécuté les commandes en arrière-plan également un séparateur de commande mais ne fonctionne pas comme point-virgule ou nouvelle ligne.