Je m'excuse à l'avance s'il s'agit d'une question en double. J'ai fait un effort pour rechercher / vérifier avant de demander ici.
Je suis à l'aise avec l'écriture de lignes simples comme ceci:
foocommand && foocommand2 && foocommand3
L'idée étant que je souhaite que les commandes suivantes s'exécutent uniquement si la précédente a "réussi".
J'écris un script un peu long et ce one-liner n'est pas réalisable car il ressemble à un énorme bloc de code déroutant pour tout le monde.
Je veux espacer les commandes et écrire des commentaires entre elles dans le script. Comment puis-je faire cela et avoir encore l'équivalent de && là-dedans?
||et &&(par opposition à |ou &) est appelé court-circuit. Le comportement utilisé avec ces derniers opérateurs est appelé évaluation avide.
a && b && cne s'exécutera que bsi aréussit, donc "il ne s'exécute que csi bréussit" et "il ne s'exécute que csi aet les bdeux réussissent" sont des instructions équivalentes: bne peut réussir que s'il aréussit.
a || b && cest plus illustratif.
true || false && echo hisortira hi. La spécification se lit comme suit: Les opérateurs "&&" et "||" doivent avoir la même priorité et doivent être évalués avec l'associativité gauche.
&&ne signifie pas que la commande suivante fonctionnera si le précédent un a réussi. Cela signifie que la commande s'exécutera si le résultat collectif de toutes les commandes précédentes dans la liste de commandes est réussi. Vous le savez peut-être, mais les futurs lecteurs peuvent se méprendre.