0Pricing
Linux Command Line & Bash Scripting Mastery · Lección

Gestión de errores y estado de salida

Implemente una comprobación sólida de errores en sus scripts comprendiendo los estados de salida y usando «set -e» y lógica condicional.

Gestión de errores y estado de salida es una lección gratuita de Linux Command Line & Bash Scripting Mastery en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Linux Command Line & Bash Scripting Mastery, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

Le damos la bienvenida a la gestión de errores

En esta lección, hará que sus scripts de Bash sean más robustos aprendiendo a gestionar los errores de forma eficaz.

Imagine un script que realiza muchos pasos. Si uno falla, seguramente querrá que el script se detenga o, al menos, saber que se produjo un error, ¿verdad? ¡Ahí es donde entra en juego la gestión de errores!

¿Qué es un estado de salida?

Cada comando que ejecuta en el shell de Linux devuelve un estado de salida (a veces llamado código de salida o código de retorno).

  • Un estado 0 significa que el comando se completó correctamente.
  • Un estado distinto de cero (por ejemplo, 1, 2 o 127) indica algún tipo de fallo o error.

¡Es como un semáforo para sus comandos!

Compruebe manualmente el estado de salida

Puede comprobar el estado de salida del último comando ejecutado mediante la variable especial $?.

Probemos un comando correcto y otro que falle:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

Comprobación condicional básica de errores

Conocer el estado de salida permite que su script tome decisiones. Puede usar una instrucción if para comprobar $? y reaccionar ante los errores.

Esto permite que su script detecte los problemas y evita que continúe con datos no válidos.

#!/bin/bash

ls non_existent_file.txt

if [ $? -ne 0 ]; then
  echo "Error: The 'ls' command failed!"
  exit 1 # Exit script with an error code
fi

echo "This line will not run if 'ls' fails."

El poder de `set -e`

Comprobar manualmente $? después de cada comando puede resultar tedioso. ¡Aquí es donde set -e resulta útil!

Cuando inicia un script con set -e, Bash termina inmediatamente si algún comando (que no forme parte de una prueba condicional) termina con un estado distinto de cero.

¡Es un interruptor de seguridad global para sus scripts!

`set -e` en acción

Veamos cómo set -e evita que un script continúe después de un error. Observe que el comando echo final nunca llega a ejecutarse.

#!/bin/bash
set -e

echo "Starting important tasks..."

# This command will fail
cp /non_existent_source /tmp/destination

echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."

Cuándo `set -e` no detiene la ejecución

set -e es potente, pero tiene reglas específicas. No hará que el script termine si el comando que falla:

  • Forma parte de una condición if o while.
  • Forma parte de una lista && o || (salvo que sea el último comando).
  • Está precedido por !.

Estos contextos están diseñados para comprobar el éxito o el fallo, por lo que `set -e` no interfiere.

Combine `set -e` con `||`

A veces querrá mostrar un mensaje de error personalizado antes de salir. Puede combinar set -e con el operador || (OR).

command || { echo "Error message"; exit 1; }

Si command falla, se ejecuta la parte posterior a ||, se muestra su mensaje y, después, se termina con un código de error específico.

#!/bin/bash
set -e

echo "Attempting to find a file..."

find /non_existent_dir -name "*.txt" || \
  { echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }

echo "Script continued (this won't print if 'find' fails)."

Gestione códigos de salida específicos

Aunque 0 significa éxito y un valor distinto de cero significa fallo, determinados códigos distintos de cero pueden tener significados diferentes.

  • 1: Error general.
  • 2: Uso incorrecto de elementos integrados del shell.
  • 127: Comando no encontrado.

Puede usar if [ $? -eq 127 ] para comprobar tipos de fallo específicos y ofrecer información de error más precisa.

Cuestionario sobre gestión de errores

¿Cuál de las siguientes afirmaciones sobre los estados de salida y la gestión de errores de Bash es VERDADERA?

Repaso: scripts robustos

¡Ha aprendido a hacer que sus scripts de Bash sean mucho más fiables!

  • Cada comando devuelve un estado de salida (0 si se ejecuta correctamente y un valor distinto de cero si falla).
  • La variable $? proporciona el estado de salida del último comando.
  • set -e es una herramienta potente que termina automáticamente el script cuando fallan la mayoría de los comandos.
  • Combine set -e con || para mostrar mensajes de error personalizados.

El uso de estas técnicas le ayudará a escribir scripts más profesionales y estables.

Preguntas frecuentes

¿La lección «Gestión de errores y estado de salida» es gratis?

Sí — el texto completo de «Gestión de errores y estado de salida» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Linux Command Line & Bash Scripting Mastery, actualiza a CoddyKit PRO. El curso de Linux Command Line & Bash Scripting Mastery incluye 4 lecciones en total.

¿Qué aprenderé en «Gestión de errores y estado de salida»?

Implemente una comprobación sólida de errores en sus scripts comprendiendo los estados de salida y usando «set -e» y lógica condicional. Practicas Linux Command Line & Bash Scripting Mastery con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Linux Command Line & Bash Scripting Mastery?

No se requiere experiencia previa. Linux Command Line & Bash Scripting Mastery en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Gestión de errores y estado de salida»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Linux Command Line & Bash Scripting Mastery?

Sí. Cada lección de Linux Command Line & Bash Scripting Mastery incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Depuración de scripts de Bash (set -x, trap)
  2. Gestión de errores y estado de salida
  3. Buenas prácticas y linting en scripts
  4. Pruebas de scripts de Bash con Bats
← Volver a Linux Command Line & Bash Scripting Mastery