Le code de retour d'un programme shell est le code de retour de la dernière commande qu'il a exécutée.
Soit le programme shell lvi contenant l'unique commande ls vi.
#!/bin/bash # @(#) lvi ls vi
Cette commande produira une erreur car vi ne se trouve pas dans le répertoire courant ; après exécution, le code de retour de lvi sera de celui de la commande ls vi (dernière commande exécutée).
$ lvi ls: impossible d'accéder à vi: Aucun fichier ou dossier de ce type $ $ echo $? 2 => code de retour de la dernière commande exécutée par lvi $ => c.-à-d. ls vi
Autre exemple avec le programme shell lvi1 de contenu :
#!/bin/bash # @(#) lvi1 ls vi echo Fin
La dernière commande exécutée par lvi1 sera la commande interne echo qui retourne un code de retour égal à 0.
$ lvi1 ls: impossible d'accéder à vi: Aucun fichier ou dossier de ce type Fin $ $ echo $? 0 => code de retour de la dernière commande exécutée par lvi (echo Fin) $
Il est parfois nécessaire de positionner explicitement le code de retour d'un programme shell avant qu'il ne se termine : on utilise alors la commande interne exit.