Recuperar el 'exit code' de un comando "empipado" (filtrado por un 'pipe')

Cuando "empipas" un comando y recuperas el exit code de la forma habitual ($?), recuperas el exit code del comando a la derecha del pipe. Alguna vez nos podría ser necesario recuperar el exit code del comando a la izquierda y esto se hace mediante la variable $PIPESTATUS. Un ejemplo practico a continuación :]
# comprobamos que $? devuelve la salida del grep
# '0' significa que grep encontró la cadena
~$ sudo apt-get install DUMMY | grep estado
Leyendo la información de estado...
E: No se pudo encontrar el paquete DUMMY
~$ echo $?
0
~$
 
# aquí comprobamos que 100 es lo que devuelve apt
~$ sudo apt-get install DUMMY
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
E: No se pudo encontrar el paquete DUMMY
~$ echo $PIPESTATUS
100
~$
 
# comprobamos que $PIPESTATUS devuelve la salida de apt
# '100' significa cualquier cosa menos éxito :]
~$ sudo apt-get install DUMMY | grep estado
Leyendo la información de estado...
E: No se pudo encontrar el paquete DUMMY
~$ echo $PIPESTATUS
100
~$
Lenguaje: 
bash
Tags: