Uso de exit en Shell Script

El uso de exit permite saber al usuario si una acción se ha realizado correctamente o no. Cuando un comando se ha ejecutado correctamente, devuelve 0. En caso contrario, devuelve otro valor. Ese valor muchas veces es 1, pero no siempre es así. Podemos comprobar el valor devuelto con $?.

Vamos a ejecutar una instrucción correctamente y vamos a comprobar el valor de $?:

$ ls directorio_vacio/
$ echo $?
0

Y ahora vamos a ejecutar una instrucción con un fallo, por ejemplo, un ls sobre un directorio que no existe:

$ ls directorio_
ls: no se puede acceder a 'directorio_': No existe el archivo o el directorio
$ echo $?
2

Vemos que cuando lanzamos una instrucción que no se ejecuta correctamente, el valor devuelto es mayor que 0.

Normalmente el valor que devuelve un comando cuando ha habido un problema es 1, cuando devuelve 2 suele ser porque ha recibido mal un parámetro o ha habido un problema con los permisos.

Uso de exit en nuestros scripts

Del mismo modo, para facilitar a otros usuarios el que puedan comprobar si un script se ha ejecutado correctamente, deberíamos devolver valores con exit. 0 si se ha ejecutado todo bien y un valor superior si ha habido cualquier problema.

Para ello, sólo tenemos que escribir en nuestros scripts:

exit 0

O el valor que queramos que devuelva.

Si hacemos un script que liste los ficheros de un directorio en caso de que el directorio exista pero que si no existe, no nos devuelva un error por pantalla, podemos hacer:

#!/bin/bash

if [ -d $1 ]
then
    for file in $(ls $1)
    do
        echo $file
    done
    exit 0
else
    exit 1
fi

Y ahora vamos a comprobar si devuelve distinto valor si le pasamos como argumento un directorio que existe y otro que no existe:

$ ./listfiles.sh directorio_vacio/
$ echo $?
0
$ ./listfiles.sh directorio_
$ echo $?
1

De esta manera tan sencilla estamos facilitando la tarea a aquellos que usen nuestros scripts. Y a nosotros mismos cuando los usemos.

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.