Índice

Códigos de retorno

Todo comando en Linux devuelve un código al terminar su ejecución. Este código asegura el correcto desarrollo de la ejecución: cero cuando el programa ha terminado correctamente, diferente de cero en caso contrario.

El código de retorno de un comando es un valor comprendido entre 0 y 255.

Un mismo comando puede devolver diferentes códigos si su ejecución termina mal, por diversas razones. Por ejemplo, el comando cp puede fallar porque el archivo fuente no existe, los permisos de escritura del directorio de destino son insuficientes, el sistema de archivos está saturado, etc.

La variable especial $? contiene el código de retorno del último comando ejecutado: 

[javier]$ pwd  
/home/javier  
[javier]$ echo $?  
0  
[javier]$ ls zorglub  
ls: zorglub: No such file or directory  
[javier]$ echo $?  
1  
[javier]$ echo $?  
0

El último código de retorno es cero porque indica que el comando anterior (echo $?) se ha llevado a cabo bien. Para reutilizar ulteriormente el código de retorno de un programa, hay que guardarlo en una variable:

[javier]$ ls zorglub  
ls: zorglub: No such file or directory  
[javier]$ cr=$?  
[javier]$ pwd  
/home/javier  
[javier]$ echo $?  
0  
[javier]$ echo $cr  
1

De modo predeterminado, el código de retorno de un script del shell es el del último comando ...