GNU/Linux >> Tutoriels Linux >  >> Linux

Que fait `set -x` ?

set -x

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

[source]

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 . Lorsqu'elle est utilisée, l'expression arithmétique ci-dessus a été développée. Nous avons pu voir comment une seule ligne a été évaluée étape par étape.

  • Première étape expr a été évalué.
  • Deuxième étape echo a été évalué.

Pour en savoir plus sur set → visitez ce lien

en ce qui concerne votre script shell,

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

Votre script a peut-être imprimé des lignes d'informations supplémentaires lorsque le mode d'exécution sélectionné était DEBUG . Traditionnellement, les gens activaient le mode débogage lorsqu'un script était appelé avec un argument facultatif tel que -d


-u :désactivé par défaut. Lorsqu'il est activé, un message d'erreur s'affiche lors de l'utilisation d'une variable non configurée.

-v :inactif par défaut. Après l'activation, le contenu original des informations sera affiché (sans résolution variable) avant que les informations ne soient sorties.

-x :inactif par défaut. Si activé, le contenu de la commande sera affiché avant l'exécution de la commande (après résolution variable, il y a un symbole ++).

Comparez les différences suivantes :

/ # set -v && echo $HOME
/root
/ # set +v && echo $HOME
set +v && echo $HOME
/root

/ # set -x && echo $HOME
+ echo /root
/root
/ # set +x && echo $HOME
+ set +x
/root

/ # set -u && echo $NOSET
/bin/sh: NOSET: parameter not set
/ # set +u && echo $NOSET

set -x active un mode du shell où 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 d'utilisation typique pour set -x  :l'impression de chaque commande au fur et à mesure de son exécution peut vous aider à visualiser le flux de contrôle du script s'il ne fonctionne pas comme prévu.

set +x le désactive.


Linux
  1. Que fait "lc_all=c" ?

  2. Qu'est-ce que c'est ?

  3. Que fait « set -f » dans Korn Shell ?

  4. Que fait Exec 3 ?

  5. Origine d'un thread kworker

Qu'est-ce que . Commande ~/.bashrc Faire ? ?

Que fait exactement Grub_gfxpayload_linux=text ?

Que retourne malloc(0) ?

Que signifie 'cd -' ?

Que signifie set -e dans un script bash ?

Quelqu'un peut-il expliquer en détail ce que fait set -m ?