Quelle est la différence entre esperluette et point-virgule dans Linux Bash ?
Par exemple,
$ command1 && command2
contre
$ command1; command2
Le &&
l'opérateur est un opérateur AND booléen: si le côté gauche renvoie un statut de sortie non nul, l'opérateur renvoie ce statut et n'évalue pas le côté droit (il court-circuite), sinon il évalue le côté droit et renvoie sa sortie statut. Ceci est couramment utilisé pour s'assurer que command2
n'est exécuté que si command1
a été exécuté avec succès.
Le ;
jeton sépare simplement les commandes, ainsi la seconde sera exécutée, que la première réussisse ou non.
command1 && command2
exécute command2
si et seulement si) command1
l'exécution se termine avec succès. Dans le jargon Unix, cela signifie code de sortie/code de retour égal à zéro.
command1; command2
exécute command2
après avoir exécuté command1
, séquentiellement. Peu importe que les commandes aboutissent ou non.
Le premier est une logique simple AND
utilisant l’évaluation des courts-circuits, le second délimite simplement deux commandes.
En réalité, lorsque le premier programme renvoie un code de sortie différent de zéro, l'ensemble de AND
est évalué en tant que FALSE
et la deuxième commande ne sera pas exécutée. Ce dernier les exécute simplement les deux dans l'ordre.