La commande intégrée exit
quitte 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 0
fera 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 true
ou :
pour obtenir un code de sortie de zéro.
Bien sûr, plus souvent, vous utiliseriez exit
de l'intérieur d'un if
pour 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 exit
est 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' wait
appel 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.