next up previous contents
Next: El comando if Up: Programación en shell Previous: Introducción   Índice General

Códigos de salida

Cada programa una vez que termina puede brindar al entorno un Código de salida para que otros programas o el intérprete sepan como concluyó la aplicación.

Tomemos un ejemplo de la vida de un administrador. Es común que la administración sea remota, por lo que vamos a considerar que en nuestra tarea no tenemos conocimiento de lo que esta pasando en una maquina alejada en la que se esta ejecutando arreglar-base-de-datos.

El script arreglar-base-de-datos es un script que corrige posibles errores en una hipotética gran base de datos. Y el resultado de esa corrección interesa, especialmente, si no se pudo arreglar.

Vamos a suponer que hay 2 posibles alternativas:

Salida exitosa
La base de datos no tuvo ningún error. En este caso sólo hay que agregar al archivo /var/log/BD.registro una línea con la fecha de chequeo y el responsable en ese momento.

Se detectaron errores pero no se repararon
Esta situación es peor. Hay que escribir información detallada en /var/log/BD.registro y además enviar e-mail a una lista de encargados y directivos de la empresa.

Para diferenciar cada caso se asigna un código de salida a cada uno. Luego de ejecutar arreglar-base-de-datos se verifica en base al código, los comandos a ejecutar.

El algoritmo sería algo similar a:

if arreglar-base-de-datos
then
  date >> /var/log/BD.registro
  echo $RESPONSABLE_BD >>  /var/log/BD.registro 
else
  informar-errores.sh >> /var/log/BD.registro
  enviar-mail "Errores en BD" lista-encargados lista-directivos
fi

Y dónde están los códigos de salida? Bueno, el comando interno2.13 if analiza el código de salida, y si es 0 (cero) ejecuta la lista de comandos después del then, en caso contrario (y si existe) la lista de comandos después del else hasta encontrar un fi.

Por lo tanto el script arreglar-base-de-datos tiene que devolver 0 en caso de éxito. Este es el comportamiento normal de la mayoría de los comandos en Linux y otros Unixes, y un valor para varios errores.

Las paginas man suelen tener una sección llamada Exit Status que contiene los códigos que devuelve el programa.


next up previous contents
Next: El comando if Up: Programación en shell Previous: Introducción   Índice General
Proyecto Cursos - LuCAS - http://lucas.hispalinux.es/htmls/cursos.html