web-dev-qa-db-fra.com

Que fait `set -x`?

J'ai un script shell avec la ligne suivante:

[ "$DEBUG" == 'true' ] && set -x
189
Ole

set -x active un mode du shell dans lequel toutes les commandes exécutées sont imprimées sur le terminal. Dans votre cas, il est clairement utilisé pour le débogage, ce qui est un cas typique d'utilisation de set -x: l'impression de chaque commande lors de son exécution peut vous aider à visualiser le flux de contrôle du script s'il ne fonctionne pas correctement.

262
John Zwinck

set -x

Imprime une trace de commandes simples, pour les commandes, les commandes de casse, les commandes de sélection et l'arithmétique pour les commandes et leurs arguments ou les listes de mots associées après leur développement et avant leur exécution. La valeur de la variable PS4 est étendue et la valeur résultante est imprimée avant la commande et ses arguments développés.

Exemple

set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30

set +x
echo `expr 10 + 20 `
30

L'exemple ci-dessus illustre l'utilisation de set -x. Quand il est utilisé, l'expression arithmétique ci-dessus a été développée. Nous pourrions voir comment une ligne unique a été évaluée étape par étape.

  • La première étape expr a été évaluée.
  • La deuxième étape echo a été évaluée.

Pour en savoir plus sur set → visit ce lien

en ce qui concerne votre script shell,

[ "$DEBUG" == 'true' ] && set -x

Votre script imprimait peut-être quelques lignes d'informations supplémentaires lorsque le mode d'exécution sélectionné était DEBUG. Traditionnellement, les personnes activaient le mode débogage lorsqu'un script appelait avec un argument optionnel tel que -d

62
Raju