Utilisation des options du shell pour le débogage et la prévention des erreurs
Les options du shell sont particulièrement utiles pour le débogage des scripts et la prévention des erreurs courantes. Dans cette étape, nous allons explorer deux options importantes : xtrace
pour le débogage et nounset
pour la prévention des erreurs.
L'option xtrace pour le débogage
L'option xtrace
(également connue sous le nom de mode débogage) affiche chaque commande et ses arguments développés au fur et à mesure de son exécution. Ceci est extrêmement utile lors du débogage des scripts shell.
Activons l'option xtrace
:
set -o xtrace
Maintenant, lorsque vous exécutez des commandes, vous les verrez imprimées dans le terminal, précédées d'un signe plus (+
) avant leur exécution. Essayons une commande simple :
echo "Hello, World!"
Votre sortie inclura à la fois la commande en cours d'exécution et son résultat :
+ echo 'Hello, World!'
Hello, World!
Essayons un exemple un peu plus complexe avec une variable :
MY_VAR="Linux"
echo "I am using $MY_VAR"
La sortie montrera comment la variable est développée :
+ MY_VAR=Linux
+ echo 'I am using Linux'
I am using Linux
Cette fonctionnalité est inestimable lorsque vous essayez de comprendre ce qui se passe dans des scripts ou des commandes complexes.
Pour désactiver l'option xtrace
lorsque vous n'en avez plus besoin :
set +o xtrace
L'option nounset pour la prévention des erreurs
L'option nounset
aide à prévenir les erreurs en traitant les variables non définies comme des erreurs plutôt qu'en les développant en une chaîne vide. Cela peut aider à détecter les fautes de frappe et les variables non définies.
Activons l'option nounset
:
set -o nounset
Maintenant, si vous essayez d'utiliser une variable qui n'a pas été définie, le shell produira une erreur au lieu d'utiliser silencieusement une valeur vide. Testons cela :
echo "The value is: $UNDEFINED_VARIABLE"
Vous devriez voir un message d'erreur similaire à :
bash: UNDEFINED_VARIABLE: unbound variable
C'est bien mieux que de laisser votre script continuer avec une valeur vide inattendue, ce qui pourrait causer des problèmes plus tard.
Si vous souhaitez désactiver cette protection :
set +o nounset
Maintenant, essayer la même commande ne produira pas d'erreur, mais utilisera plutôt une chaîne vide :
echo "The value is: $UNDEFINED_VARIABLE"
Sortie :
The value is:
Combinaison de plusieurs options
Vous pouvez activer plusieurs options du shell à la fois. Par exemple, pour activer à la fois xtrace
et nounset
:
set -o xtrace -o nounset
Ou, en utilisant la notation abrégée :
set -xu
De nombreuses options du shell ont des équivalents à une seule lettre qui peuvent être utilisés avec la syntaxe -
(activer) et +
(désactiver). Par exemple :
-x
est équivalent à -o xtrace
-u
est équivalent à -o nounset
-e
est équivalent à -o errexit
Vérifiez à nouveau l'état actuel de vos options du shell :
set -o
Expérimentez avec différentes options pour trouver le comportement du shell qui convient le mieux à vos besoins et à votre style de travail.