La commande intégrée exitquitte le shell (à partir de la référence de Bash ):
exit [n]
Quittez le shell, en renvoyant un état de n au parent du shell. Si n est omis, l'état de sortie est celui de la dernière commande exécutée. Tout trap sur EXIT est exécuté avant la fin du shell.
L'exécution à la fin du fichier se termine également, renvoyant le code retour de la dernière commande, donc oui, une finale exit 0fera que le script se terminera avec un état réussi, quel que soit l'état de sortie des commandes précédentes. (Autrement dit, en supposant que le script atteigne la finale exit.) À la fin d'un script, vous pouvez également utiliser trueou :pour obtenir un code de sortie de zéro.
Bien sûr, plus souvent, vous utiliseriez exitde l'intérieur d'un ifpour terminer le script au milieu.
Ceux-ci doivent afficher un 1 ( $?contient le code de sortie renvoyé par la commande précédente):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Bien que cela devrait imprimer un 0:
sh -c "false; exit 0" ; echo $?
Je ne sais pas si le concept du script "échouant" lors de l'exécution d'un exitest logique, car il est tout à fait possible que certaines commandes exécutées par le script échouent, mais que le script lui-même réussisse. C'est à l'auteur du script de décider ce qui est un succès et ce qui ne l'est pas.
En outre, la plage standard pour les codes de sortie est 0..255. Les codes supérieurs à 127 sont utilisés par le shell pour indiquer un processus terminé par un signal, mais ils peuvent être retournés de la manière habituelle. L' waitappel système renvoie en fait une valeur plus large, le reste contenant des bits d'état définis par le système d'exploitation.
exit 0, il se terminera avec le code de sortie de 0 indépendamment de ce qui se passe dans le script.