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

Depuración de scripts de Bash (set -x, trap)

Descubra métodos para depurar sus scripts de Bash, incluido el rastreo de la ejecución y el uso de «trap» para gestionar errores.

Depuración de scripts de Bash (set -x, trap) es una lección gratuita de Linux Command Line & Bash Scripting Mastery en CoddyKit. Esta es la lección 1 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.

¿Por qué depurar los scripts?

¡Hasta los mejores scripts pueden tener errores! La depuración es el proceso de encontrar y corregir estos errores.

Es una habilidad fundamental para cualquier desarrollador, ya que le ayuda a entender paso a paso qué hace su script y dónde pueden estar surgiendo los problemas.

En esta lección, aprenderá a usar potentes herramientas de Bash para rastrear la ejecución y gestionar eventos inesperados.

Rastree su script con `set -x`

Una de las herramientas de depuración más sencillas y eficaces de Bash es set -x. Esta opción activa el rastreo de comandos.

  • Cuando está activa, Bash imprime cada comando y sus argumentos en la salida de error estándar (que normalmente es su terminal) justo antes de ejecutarlo.
  • Esta salida incluye el estado de las variables después de la expansión, lo que le permite ver claramente qué está a punto de hacer Bash.
  • ¡Es como observar la ejecución de su script a cámara lenta!

Vea `set -x` en acción

Veamos set -x en acción. Observe cómo el shell imprime cada comando después de expandir las variables, precedido por un signo +.

Pruebe a ejecutar este ejemplo:

#!/bin/bash

# Enable command tracing
set -x

NAME="Coddy"
MESSAGE="Hello, $NAME!"

echo $MESSAGE

# This command will intentionally fail
ls -l /nonexistent_directory

# Disable command tracing
set +x

echo "Tracing is now off."

Comprenda la salida del rastreo

Cuando set -x está activado, verá líneas que comienzan con el símbolo +. Esto indica una salida de rastreo.

  • Después de + aparece el comando que Bash está a punto de ejecutar, junto con sus argumentos después de cualquier sustitución de variables o comandos.
  • Esto resulta muy útil para ver los valores exactos de las variables y el comando preciso que se está ejecutando.
  • Ayuda a localizar problemas como rutas incorrectas, variables vacías o estructuras de comandos no deseadas.

Controle el alcance de `set -x`

No siempre es necesario rastrear todo el script. Puede activar set -x para secciones específicas:

  • Use set -x para activar el rastreo.
  • Use set +x para desactivarlo.

Así podrá concentrar sus esfuerzos de depuración en las partes problemáticas del script sin verse abrumado por la salida de las secciones estables.

Gestione eventos con `trap`

El comando trap permite capturar señales y otros eventos y, después, ejecutar un comando cuando ocurren. Resulta muy útil para:

  • Limpieza: Garantizar que se eliminen los archivos temporales.
  • Gestión de errores: Responder a comandos fallidos.
  • Salidas controladas: Gestionar interrupciones del usuario, como Ctrl+C.

La sintaxis básica es trap 'command_to_execute' SIGNAL_OR_EVENT.

Limpie con `trap EXIT`

La pseudoseñal EXIT es especial. Un comando asociado a EXIT se ejecutará justo antes de que termine el script, independientemente de cómo finalice (con éxito, por un error o debido a una interrupción).

Esto resulta perfecto para tareas de limpieza, como eliminar archivos temporales. Pruebe a ejecutar este script:

#!/bin/bash

TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"

# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT

echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"

# Simulate some work
sleep 2

echo "Script logic completed. Exiting..."

Capture errores con `trap ERR`

La pseudoseñal ERR se activa cuando un comando termina con un estado distinto de cero (es decir, cuando falla). Esto permite realizar acciones específicamente cuando ocurre un error.

Nota: trap ERR solo funciona si el comando no forma parte de una condición if, while o until, ni se comprueba explícitamente su valor de retorno (por ejemplo, command || true).

#!/bin/bash

# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR

echo "Starting script with an intentional error..."

# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist

echo "This line will NOT be reached if an error occurs."

Responda a las señales (INT, TERM)

trap también puede capturar señales estándar de Linux. Algunas habituales son:

  • INT (interrupción): Se envía al pulsar Ctrl+C.
  • TERM (terminación): Solicita que un proceso termine de forma controlada.

La captura de estas señales permite que el script realice tareas de limpieza o guarde su estado antes de apagarse, en lugar de finalizar de forma abrupta.

#!/bin/bash

# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT

echo "Running a continuous task. Press Ctrl+C to stop."

while true; do
  echo "Working... $(date)"
  sleep 3
done

Compruebe sus conocimientos de depuración

Compruebe su comprensión de las técnicas de depuración de Bash.

Repaso: depuración de sus scripts

¡Excelente trabajo! Ha aprendido herramientas esenciales para depurar sus scripts de Bash:

  • set -x: Activa el rastreo de comandos y muestra exactamente qué ejecuta Bash. Use set +x para desactivarlo.
  • trap: Permite ejecutar comandos en respuesta a eventos o señales específicos.
  • `trap EXIT`: Garantiza que las tareas de limpieza se ejecuten antes de que termine el script.
  • `trap ERR`: Captura los comandos que terminan con un estado distinto de cero.
  • `trap INT`/`TERM`: Gestiona de forma controlada las interrupciones del usuario o las solicitudes de terminación.

Dominar estas técnicas mejorará considerablemente su capacidad para solucionar problemas y crear scripts de Bash robustos.

Preguntas frecuentes

¿La lección «Depuración de scripts de Bash (set -x, trap)» es gratis?

Sí — el texto completo de «Depuración de scripts de Bash (set -x, trap)» 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 «Depuración de scripts de Bash (set -x, trap)»?

Descubra métodos para depurar sus scripts de Bash, incluido el rastreo de la ejecución y el uso de «trap» para gestionar errores. 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 1 de 4.

¿Cuánto tiempo toma la lección «Depuración de scripts de Bash (set -x, trap)»?

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