Un script Bash es una herramienta poderosa para automatizar tareas en sistemas Linux.
Sin embargo, a diferencia de los lenguajes de programación de alto nivel, Bash no tiene bloques incorporados de try-catch para manejar errores.
En su lugar, debes aplicar diferentes estrategias para detectar y manejar errores durante la ejecución de scripts.
En este artículo, examinaremos cinco métodos para manejar errores en scripts Bash, comenzando desde los más accesibles para principiantes hasta enfoques más complejos.
Métodos de Manejo de Errores en Bash

En Bash, el manejo de errores se puede realizar de diversas maneras, a pesar de que el lenguaje no cuenta con un bloque directo de try-catch, como en lenguajes como Python o JavaScript.
A continuación, revisaremos cinco métodos, cada uno de los cuales, a medida que aumenta la complejidad, permite capturar y manejar errores en scripts Bash.
#1. Verificación Básica de Errores con el Estado de Salida
La forma más simple de manejar errores en Bash es verificar el estado de salida de un comando.
En Bash, cada comando devuelve un código de salida al finalizar.
Un código de salida igual a 0 significa éxito, mientras que cualquier código de salida diferente de cero significa fallo.
#!/bin/bash
mkdir /root/test_dir
if [ $? -ne 0 ]; then
echo "Error: Falló al crear el directorio."
exit 1
fi
echo "Directorio creado exitosamente."
En este método, ejecutamos el comando y verificamos inmediatamente el estado de salida con la variable $?
. Si el estado es diferente de cero, mostramos un mensaje de error y salimos del script.
#2. Uso del Comando ‘set -e’ para Salir al Encontrar un Error
Puedes usar el comando set -e
para indicar al script que salga inmediatamente si cualquier comando devuelve un estado diferente de cero.
Esto es útil para scripts donde es necesario asegurarse de que cualquier fallo detenga la ejecución.
#!/bin/bash
set -e
mkdir /root/test_dir
echo "Directorio creado exitosamente."
Al usar set -e
, el script se cierra automáticamente al fallar en la creación del directorio, lo que te evita tener que verificar manualmente el estado de salida después de cada comando.
#3. Manejo de Errores con ‘trap’
Bash proporciona el comando trap
para interceptar señales y errores.
Puedes definir un trap
para ejecutar comandos específicos cuando ocurre un error.
#!/bin/bash
trap 'echo "Ocurrió un error en la línea $LINENO. Código de salida: $?. Saliendo..."; exit 1;' ERR
mkdir /root/test_dir
echo "Directorio creado exitosamente."
Aquí, el comando trap
captura cualquier error (señalizado por la palabra clave ERR
) y ejecuta el código de manejo de errores especificado.
#4. Redirección de Errores a un Archivo de Registro
En lugar de mostrar errores en la consola, puedes redirigirlos a un archivo de registro para una mejor depuración.
#!/bin/bash
exec 2>error_log.txt
mkdir /root/test_dir
if [ $? -ne 0 ]; then
echo "Error: Falló al crear el directorio."
exit 1
fi
echo "Directorio creado exitosamente."
En este método, la línea exec 2>error_log.txt
redirige el error estándar (descriptor de archivo 2) a un archivo de registro, permitiendo revisar los detalles del error más tarde.
En Bash, los descriptores de archivo se enumeran como sigue:
0
: entrada estándar (stdin)1
: salida estándar (stdout)2
: error estándar (stderr)
Así que 2>
significa que estamos redirigiendo la salida de errores.
#5. Función Personalizada de Manejo de Errores
Para un manejo de errores más complejo, puedes crear una función personalizada para manejar diferentes tipos de errores, lo que añadirá flexibilidad a tus scripts.
#!/bin/bash
handle_error() {
echo "Error en la línea $1"
exit 1
}
trap 'handle_error $LINENO' ERR
mkdir /root/test_dir
echo "Directorio creado exitosamente."
En este método, la función handle_error
se activa cada vez que ocurre un error, proporcionando el número exacto de línea donde falló, lo que ayuda a depurar de manera más efectiva.
Conclusión
Aunque en los scripts Bash no existe una función incorporada de try-catch, mediante varios métodos, como la verificación del estado de salida, los comandos trap
y las funciones personalizadas de manejo de errores, puedes gestionar eficazmente los errores.
Ya seas principiante o un usuario experimentado, estos métodos te ayudarán a aumentar la confiabilidad de tus scripts Bash.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.