Utilisez &&
opérateur,
cmd1 && cmd2 && cmd3
Dans le shellscripting, &&
y ||
sont modelés d'après l'implémentation optimisée des opérateurs logiques en C. &&
signifie opérateur AND, et ||
signifie OR. Unix est étroitement lié au C, et en C, le second opérande des opérateurs logiques n'est pas évalué si le résultat est déjà connu à partir du premier opérande. Par exemple "false && x"
es false
pour tout x
Il n'est donc pas nécessaire d'évaluer x
(surtout si x
est un appel de fonction) ; de même pour "true || x"
. On l'appelle aussi court-circuitage sémantique .
Et dans Unix, il est traditionnel d'interpréter les valeurs de retour des commandes comme des valeurs de vérité "d'achèvement réussi" : le code de sortie 0 signifie true
(succès), une valeur non nulle signifie false
(échec). Ainsi, lorsque la première commande de cmd1 && cmd2
収益 "false"
(état de sortie non nul, qui indique un échec), l'état de la commande composée est connu : échec. Ainsi, l'interprétation globale de cmd1 && cmd2
peut être : "exécuter cmd1
ET ALORS, si ça n'a pas échoué, cmd2
". Ce qui est en fait ce que vous voulez dans votre question.
De même avec OR : cmd1 || cmd2
peut être interprété comme "exécuter cmd1
OU SI elle échoue, cmd2
".
Protip : pour les chaînes plus longues de &&
envisagez de mettre set -e
dans votre script. En gros, ça change le point-virgule ;
en &&
avec quelques cas particuliers.