&& est le ET logique:
&& est un moyen d'exprimer le ET logique , ce qui signifie que l'expression entière n'est vraie que si ses deux côtés sont vrais. En logique, on dit que la déclaration entière (P&Q) n'est vraie que lorsque P et Q sont vrais.
En conséquence, les ordinateurs traitent généralement P&Q comme une évaluation de court-circuit . Donc, puisque la déclaration entière ne sera vraie que si P et Q sont tous deux vrais, alors si P est faux, la déclaration Q n'est pas évaluée . Fondamentalement, les ordinateurs sont paresseux (efficaces) et ne prennent pas la peine d'évaluer Q s'ils n'en ont pas trop. Cela vaut également pour OU logique, voir le lien précédent.
Les trois contextes de && dans Bash:
1) Utilisation de l'évaluation des courts-circuits avec l'état de sortie d'une commande:
chaque commande a un état de sortie. Si une commande contient une erreur, son état de sortie est différent de zéro. Donc, si l'état de sortie est différent de zéro et que && est utilisé pour enchaîner les commandes dans une instruction, les commandes ultérieures ne seront pas évaluées (exécutées) si la précédente n'avait pas l'état de sortie 0 (Vrai). Cela est dû à l'évaluation des courts-circuits. Donc si vous avez:
P && Q
Q ne sera pas exécuté si P n'était pas vrai (si P sort avec un statut différent de 0, ce n'est pas vrai). Tout comme:
./configure && make
make ne sera pas exécuté si configure avait une erreur, n'était pas vrai. Donc, en gros, cela finit par être un moyen d'écrire la déclaration if then:
if ./configure ; then
make
fi
Gardez à l'esprit que dans la plupart des contextes, 0 est faux, mais pas lorsqu'il s'agit d'un statut de sortie.
2) && Peut être utilisé dans la commande de test [[]] intégrée de Bash:
&& Peut également être utilisé à l'intérieur de la commande de test intégrée dans bash [[]] pour combiner des expressions d'une manière similaire à la combinaison de commandes. L'opération de test entière ne sera vraie que si les deux opérandes (côtés) de && sont vrais, par exemple:
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
serait une façon de dire si $ a est un entier compris entre 2 et 5 (hors 2 et 5).
3) Évaluation arithmétique:
Enfin, && peut être utilisé dans l'évaluation arithmétique comme ET logique. Si les deux (ET logique) des nombres suivants sont différents de zéro, il renvoie 0, sinon 1 est renvoyé:
kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0