Skip to content

Comment faire écho aux commandes shell lorsqu’elles sont exécutées

Solution:

set -x ou set -o xtrace développe les variables et imprime un petit signe + avant la ligne.

set -v ou set -o verbose ne développe pas les variables avant l’impression.

Utilisation set +x et set +v pour désactiver les paramètres ci-dessus.

Sur la première ligne du script, on peut mettre #!/bin/sh -x (ou -v) pour avoir le même effet que set -x (ou -v) plus tard dans le script.

Ce qui précède fonctionne également avec /bin/sh.

Voir le wiki des bash-hackers sur set attributs, et sur le débogage.

$ cat shl
#!/bin/bash                                                                     

DIR=/tmp/so
ls $DIR

$ bash -x shl 
+ DIR=/tmp/so
+ ls /tmp/so
$

set -x vous donnera ce que vous voulez.

Voici un exemple de script shell à démontrer :

#!/bin/bash
set -x #echo on

ls $PWD

Cela développe toutes les variables et imprime les commandes complètes avant la sortie de la commande.

Sortir:

+ ls /home/user/
file1.txt file2.txt

J’utilise une fonction pour faire écho et exécuter la commande :

#!/bin/bash
# Function to display commands
exe() { echo "$ [email protected]" ; "[email protected]" ; }

exe echo hello world

Quelles sorties

$ echo hello world
hello world

Pour des pipes de commandes plus compliquées, etc., vous pouvez utiliser eval :

#!/bin/bash
# Function to display commands
exe() { echo "$ ${@/eval/}" ; "[email protected]" ; }

exe eval "echo 'Hello, World!' | cut -d ' ' -f1"

Quelles sorties

$  echo 'Hello, World!' | cut -d ' ' -f1
Hello



Articles Similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.