Manejo de errores en Bash

Nilesh Katuwal 20 junio 2023
Manejo de errores en Bash

Este artículo enseña el manejo de errores en bash. Recuerde, conocer los códigos de salida, opciones como errexit y trap nos permite construir scripts robustos y manejar problemas con bash de manera más efectiva.

Códigos de salida en Bash

El manejo de errores basado en códigos de salida es la técnica estándar para detectar fallas en los comandos. Esto es particularmente cierto con respecto a los comandos externos.

El comando curl en bash es un excelente ejemplo de cómo manejar problemas basados en códigos de error conocidos. A diferencia de las rutinas definidas por el usuario, los códigos de error de comandos externos están completamente documentados.

${?} almacena un estado de salida del último comando ejecutado antes de una línea dada. Un código de 0 indica que el comando se ejecutó con éxito. De lo contrario, algo salió mal.

case {?} in
0) {
true # ok
} ;;
*) {
false # something went wrong
}

El manejo de errores de Bash se puede realizar con códigos de salida simples. Puedes intentarlo hasta que encuentres una solución más perezosa. Como mínimo, cualquier individuo haría esto después de implementar algunos condicionales para manejar los problemas de acuerdo con los códigos de error.

Salir en caso de error

Exit on error es, sin duda, la capacidad de detección y manejo de errores más útil con la que los programadores de bash no comienzan.

trampa, SALIR y ERROR

trap nos permite especificar comandos para ejecutar si el shell recibe una señal. SIGNAL SPECs son los nombres dados a las señales. Algunas señales frecuentes de EXIT, ERROR, DEBUG y RETURN.

Podemos listar más señales usando el comando trap -l. También podemos determinar qué comandos están vinculados con una determinada señal utilizando trap -p SIGSPEC.

Por ejemplo, podemos querer determinar qué comandos corresponden a la señal ERR. En esa situación, podríamos escribir la siguiente línea de comando:

trap -p ERR

Si la salida está vacía, trap aún no ha vinculado ningún comando con la señal.

_() { echo oops ; }
 trap _ ERR EXIT

Ahora, los comandos de señal de impresión no producen un resultado vacío.

APORTE:

trap -p EXIT ERR

Producción :

trap -- '_' EXIT
trap -- '_' ERR

Artículo relacionado - Bash Error