7.4. Code de retour d'une suite de commandes

Le code de retour d'une suite de commandes est le code de retour de la dernière commande exécutée.

Le code de retour de la suite de commandes cmd1 ; cmd2 ; cmd3 est le code de retour de la commande cmd3.

$ pwd ; ls vi ; echo bonjour
/home/sanchis
ls: impossible d'accéder à vi: Aucun fichier ou dossier de ce type
bonjour
$ echo $?
0     => code de retour de echo bonjour
$

Il en est de même pour le pipeline cmd1 | cmd2 | cmd3. Le code de retour sera celui de cmd3.

$ cat pass tutu | grep sanchis
cat: tutu: Aucun fichier ou dossier de ce type
sanchis:x:103:100::/home/sanchis:/bin/bash
$
$ echo $?
0    => code de retour de grep sanchis (le code de retour de cat pass tutu est 1)
$

Il est possible d'obtenir la négation d'un code de retour d'un pipeline en plaçant le mot-clé ! devant celui-ci. Cela signifie que si le code de retour de pipeline est égal à 0, alors le code de retour de ! pipeline est égal à 1.

$ ! ls pass    => le code de retour de ls pass est égal à 0
pass
$
$ echo $?
1
$
$ ! cat pass | grep daemon
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
$
$ echo $?
1
$

Inversement, si le code de retour de pipeline est différent de 0, alors celui de ! pipeline est égal à 0.

$ ! grep sanchis tutu
grep: tutu: Aucun fichier ou dossier de ce type
$
$ echo $?
0
$