Débogage des scripts Bash (set -x, trap)
Découvrez des méthodes pour déboguer vos scripts Bash, notamment le suivi de l’exécution et l’utilisation de « trap » pour gérer les erreurs.
Débogage des scripts Bash (set -x, trap) est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Pourquoi déboguer vos scripts ?
Même les meilleurs scripts peuvent contenir des bogues ! Le débogage consiste à trouver et à corriger ces erreurs.
C’est une compétence essentielle pour tout développeur : elle vous aide à comprendre ce que fait votre script étape par étape et à repérer ce qui peut mal fonctionner.
Dans cette leçon, vous découvrirez de puissants outils Bash pour suivre l’exécution et gérer les événements inattendus.
Tracer votre script avec `set -x`
L’un des outils de débogage les plus simples et les plus efficaces de Bash est set -x. Il active la trace des commandes.
- Lorsqu’elle est active, Bash affiche chaque commande et ses arguments sur la sortie d’erreur standard (ce qui correspond généralement à votre terminal), juste avant de l’exécuter.
- Cette sortie inclut l’état des variables après leur expansion, ce qui vous permet de voir clairement ce que Bash est sur le point de faire.
- C’est comme regarder votre script s’exécuter au ralenti !
Voir `set -x` en action
Voyons set -x en action. Remarquez comment le shell affiche chaque commande après l’expansion des variables, précédée du signe +.
Essayez d’exécuter cet exemple :
#!/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."Comprendre la sortie de la trace
Lorsque set -x est activé, vous voyez des lignes qui commencent par le symbole +. Cela indique une sortie de trace.
- Le symbole
+est suivi de la commande que Bash est sur le point d’exécuter, avec ses arguments après les substitutions de variables ou de commandes. - C’est extrêmement utile pour voir les valeurs exactes des variables et la commande précise qui est exécutée.
- Cela vous aide à localiser des problèmes tels que des chemins incorrects, des variables vides ou des structures de commandes involontaires.
Contrôler la portée de `set -x`
Vous n’avez pas toujours besoin de tracer l’intégralité de votre script. Vous pouvez activer set -x pour certaines sections :
- Utilisez
set -xpour activer la trace. - Utilisez
set +xpour désactiver la trace.
Cela vous permet de concentrer vos efforts de débogage sur les parties problématiques de votre script, sans être submergé par la sortie des sections stables.
Gérer les événements avec `trap`
La commande trap vous permet d’intercepter des signaux et d’autres événements, puis d’exécuter une commande lorsqu’ils se produisent. Elle est particulièrement utile pour :
- Le nettoyage : garantir la suppression des fichiers temporaires.
- La gestion des erreurs : réagir aux commandes qui échouent.
- Les sorties propres : gérer les interruptions de l’utilisateur, comme Ctrl+C.
La syntaxe de base est trap 'command_to_execute' SIGNAL_OR_EVENT.
Nettoyer avec `trap EXIT`
Le pseudo-signal EXIT est particulier. Une commande interceptée avec EXIT s’exécute juste avant la fin de votre script, quelle que soit la manière dont il se termine (réussite, échec ou interruption).
C’est idéal pour les tâches de nettoyage, comme la suppression de fichiers temporaires. Essayez d’exécuter ce 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..."Intercepter les erreurs avec `trap ERR`
Le pseudo-signal ERR se déclenche lorsqu’une commande se termine avec un statut différent de zéro (c’est-à-dire lorsqu’elle échoue). Cela vous permet d’effectuer des actions spécifiques lorsqu’une erreur se produit.
Remarque : trap ERR ne fonctionne que si la commande ne fait pas partie d’une condition if, while ou until, et si sa valeur de retour n’est pas vérifiée explicitement (par exemple, 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."Réagir aux signaux (INT, TERM)
trap peut également intercepter les signaux Linux standard. Parmi les plus courants :
INT(interruption) : envoyé lorsque vous appuyez surCtrl+C.TERM(terminaison) : demande de terminer proprement un processus.
L’interception de ces signaux permet à votre script d’effectuer un nettoyage ou d’enregistrer son état avant de s’arrêter, plutôt que de quitter brusquement.
#!/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
doneVérification du débogage
Vérifions votre compréhension des techniques de débogage de Bash.
Récapitulatif : déboguer vos scripts
Excellent travail ! Vous avez découvert des outils essentiels pour déboguer vos scripts Bash :
set -x: active la trace des commandes et vous montre exactement ce que Bash exécute. Utilisezset +xpour la désactiver.trap: permet d’exécuter des commandes en réponse à des événements ou signaux précis.- `trap EXIT` : garantit l’exécution des tâches de nettoyage avant la fin du script.
- `trap ERR` : intercepte les commandes qui se terminent avec un statut différent de zéro.
- `trap INT`/`TERM` : gère proprement les interruptions de l’utilisateur ou les demandes de terminaison.
La maîtrise de ces techniques améliorera considérablement votre capacité à résoudre les problèmes et à créer des scripts Bash robustes !
Questions Fréquemment Posées
La leçon « Débogage des scripts Bash (set -x, trap) » est-elle gratuite ?
Oui — le texte complet de « Débogage des scripts Bash (set -x, trap) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Débogage des scripts Bash (set -x, trap) » ?
Découvrez des méthodes pour déboguer vos scripts Bash, notamment le suivi de l’exécution et l’utilisation de « trap » pour gérer les erreurs. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Débogage des scripts Bash (set -x, trap) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Débogage des scripts Bash (set -x, trap)
- Gestion des erreurs et statut de sortie
- Bonnes pratiques de script et analyse statique
- Tester des scripts Bash avec Bats