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 DevOps Bootcamp 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 DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp 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 -xpara activar el rastreo. - Use
set +xpara 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 pulsarCtrl+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
doneCompruebe 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. Useset +xpara 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp 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 DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp 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
- Depuración de scripts de Bash (set -x, trap)
- Gestión de errores y estado de salida
- Buenas prácticas y linting en scripts
- Pruebas de scripts de Bash con Bats