379 votes

Arrêt à la première erreur

Duplicata possible :
Sortie automatique du shell bash script sur erreur

Comment puis-je faire en sorte que bash s'arrête à l'échec de la première commande, sans mettre des trucs comme ça partout dans mon code ?

some_prog || exit 1
some_other_prog || exit 1

1 votes

Pourquoi cette question est-elle fermée en tant que doublon, c'est une question différente. FML

681voto

Alok Singhal Points 33073

Peut-être que vous voulez set -e :

www.davidpashley.com/articles/writing-robust-shell-scripts.html#id2382181 :

Cela indique à bash qu'il doit quitter le script si une déclaration renvoie une valeur de retour non vraie. L'avantage d'utiliser -e est qu'il empêche les erreurs de faire boule de neige et de devenir des problèmes sérieux alors qu'elles auraient pu être attrapées plus tôt. Encore une fois, pour plus de lisibilité, vous pouvez utiliser set -o errexit.

151 votes

Soyez conscient de set -e Des problèmes : mywiki.wooledge.org/BashFAQ/105

1 votes

@Kris Merci, cela m'a piqué sur linux mint. il quitte silencieusement script sans message. j'ai donc supprimé l'utilisation de set -e.

6 votes

@LukeW c'est normal. Cependant, le code de sortie sera non nul, ce qui indique une erreur. De plus, tout programme qui échoue imprime normalement un message d'erreur par lui-même, essayez avec juste shebang + set -e + par exemple ls nope . Vous obtenez un message d'erreur clair, et les scripts échouent rapidement. Excellent logiciel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X