Cómo capturar un error en la ejecución de un Shell Script (sh) en Linux. Como ejemplo, obtenemos el mensaje del error (si se produce) y lo enviamos por correo electrónico. Este procedimiento es válido para cuando queremos ejecutar unos comandos concretos si se produce un error u otros diferentes si no se produjera. Mostramos también el uso de un condicional (if) en el shell script.

Shell Script sh en Linux para capturar errores

A continuación, mostramos el script sh completo de ejemplo de captura de errores, con cada línea principal comentada indicando su funcionamiento:

Explicamos lo que hace el script anterior:

  • En primer lugar muestra por pantalla «Copiando fichero…».
  • Copia el fichero /home/oracle/log_export.log a /backup/oracle. Almacena en la variable «resultado» el resultado de la ejecución del comando anterior.
  • Muestra por pantalla «Fin del proceso de copia…».
  • Ejecuta una sentencia condicional, si la variable «resultado» no tiene valor es porque no se ha producido error al copiar el fichero. Por ello, si está vacía realizará lo siguiente:
    • Almacena el texto «Fichero copiado correctamente.» en la variable «mensaje».
    • Muestra por pantalla el texto: «Aquí se pueden añadir más líneas de comandos…».
    • Muestra por pantalla el texto: «Se ejecutarán únicamente si el resultado ha sido correcto.».
  • En caso de contener algún valor la variable «resultado», indicará que se ha producido un error. En este caso, se realizarán las siguientes acciones:
    • Almacena el texto «Error al copiar fichero: resultado», donde «resultado» mostrará el error que se ha producido.
    • Muestra por pantalla el texto: «Y aquí también…».
    • Muestra por pantalla el texto: «Se ejecutarán únicamente si el resultado ha sido incorrecto.».
  • Muestra el texto contenido en la variable «mensaje» por pantalla.
  • Envía un correo electrónico al destinatario alonso@alonso.com con el valor de la variable «mensaje», que enviará:
    • Si se ha producido error: Resultado de la copia de fichero: Error al copiar fichero: error producido.
    • Si no se ha producido error: Resultado de la copia de fichero: Fichero copiado correctamente.

Ejecución del script en Linux y el resultado de la ejecución (texto por pantalla y envío de mail)

Si guardamos el contenido del script anterior en un fichero llamado prueba_captura_error.sh y lo ejecutamos con el comando:

Si no se ha producido error devolverá:

Ejecución del script en Linux y el resultado de la ejecución (texto por pantalla y envío de mail)

Y el correo electrónico:

Ejecución del script en Linux y el resultado de la ejecución (texto por pantalla y envío de mail)

En caso de producirse error, la salida por pantalla será:

Ejecución del script en Linux y el resultado de la ejecución (texto por pantalla y envío de mail)

Y el correo electrónico que se envía:

Ejecución del script en Linux y el resultado de la ejecución (texto por pantalla y envío de mail)