Quelle est la différence entre l'esperluette et le point-virgule dans Linux Bash ?
Par exemple,
$ command1 && command2
contre
$ command1; command2
Quelle est la différence entre l'esperluette et le point-virgule dans Linux Bash ?
Par exemple,
$ command1 && command2
contre
$ command1; command2
Réponses:
L' &&
opérateur est un opérateur ET booléen: si le côté gauche renvoie un état de sortie différent de zéro, l'opérateur renvoie cet état et n'évalue pas le côté droit (il court-circuite), sinon il évalue le côté droit et renvoie son état de sortie . Ceci est couramment utilisé pour s'assurer qu'il command2
n'est exécuté que s'il est command1
exécuté avec succès.
Le ;
jeton sépare simplement les commandes, il exécutera donc la deuxième commande, que la première réussisse ou non.
&&
différente d'une esperluette simple &
dans bash?
&
provoque l' exécution de la commande en arrière-plan, donc oui. «Exécuter ceci en arrière-plan» est très différent de «exécuter cette commande suivante uniquement si celle-ci réussit».
;
Attend- il toujours la fin de la première commande?
a;b
signifie «courir a
puis courir b
». a&&b
signifie "exécuter a
, puis exécuter b
uniquement si cela a
a réussi."
command1 && command2
s'exécute command2
si (et seulement si) l' command1
exécution se termine avec succès. Dans le jargon Unix, cela signifie un code de sortie / code de retour égal à zéro.
command1; command2
s'exécute command2
après exécution command1
, séquentiellement. Peu importe que les commandes aient réussi ou non.
Le premier est une logique simple AND
utilisant l'évaluation des courts-circuits, le second délimite simplement deux commandes.
Ce qui se passe en réalité, c'est que lorsque le premier programme renvoie un code de sortie différent de zéro, le tout AND
est évalué FALSE
et la deuxième commande ne sera pas exécutée. Ce dernier les exécute simplement tous les deux dans l'ordre.