Quest-ce que `bash -x`

Un collègue ma récemment présenté bash -x pour déboguer mes scripts bash sans prendre litinéraire echo $foo.

$ bash -x hello-world.sh + echo "Hello World" Hello World 

En interne – comment bash y parvient-il? Jai vérifié man bash et il (ne semble pas avoir?) Mentionné le drapeau -x lors de lappel de linterpréteur. Je recherche principalement un aperçu de ce qui sera et ne sera pas débogué dans lenvironnement -x, ou dans tout autre piège.

Réponse

-x équivaut à définir xtrace avec -o à bash. À partir de ma copie de la page de manuel bash:

Après avoir développé chaque commande simple , pour la commande , case , sélectionnez la commande ou arithmétique pour commande, affiche la valeur développée de PS4 , suivie de la commande et de son argument développé ts ou liste de mots associés.

Je ne pense pas quil y ait beaucoup de « pièges » avec ceci: il affiche chaque commande quil exécute. Je suppose que si vous « analysez la sortie stderr du script shell, cela peut gâcher cela, car les commandes sont imprimées sur stderr (aka descripteur de fichier 2), mais cela semble être un cas extrême.

(Vous pouvez également lactiver conditionnellement à lintérieur de scripts ou dans des sessions shell interactives avec set -x pour activez-le et set +x pour le désactiver à nouveau.)

Commentaires

  • Oof. Merci . set help dit simplement -x Print commands and their arguments as they are executed.. Je nai pas pu ' trouver quoi que ce soit sur la façon de non défini que dans le shell actuel.
  • @sherrellbc: set help définit les paramètres de position sur le mot help et doesn ' t afficher quoi que ce soit. help set donne environ une ligne pour chaque option, y compris celle que vous affichez pour -x dans ma (ancienne) version, et en t la fin de cette liste dit Using + rather than - causes these flags to be turned off.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *