web-dev-qa-db-fra.com

équivalent "écho sur" pour Linux?

Comment puis-je obtenir toutes les commandes de Stdout qui fonctionnent dans Bash Script?

C'est la sortie doit contenir des commandes de sortie et des commandes elles-mêmes.

J'ai trouvé

#!/bin/bash -x

mais ce n'est pas exactement la même chose parce que au lieu de

 mysql -v dbname < dump.sql | grep "CREATE TABLE"

ça montre

+ mysql -v dbname
+ grep 'CREATE TABLE'
27
Putnik

Utilisation bash -v.

Ceci est le script:

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'

echo "Done."

Ceci est la sortie:

#!/bin/bash -v

echo "Hello, World" | sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
Done.

Malheureusement, il n'y a pas de marqueur spécial comme PS4 Pour imprimer des commandes étendues. Vous pouvez combiner les deux pour identifier rapidement les commandes:

#!/bin/bash -vx

echo "Hello, World" | sed 's|Hello|Goodbye|'
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World

echo "Done."
+ echo Done.
Done.
32
Daniel Beck