equivalente "echo on" para Linux?

equivalente "echo on" para Linux?

Como posso obter stdout de todos os comandos executados no script bash?

Essa saída deve conter a saída dos comandos E os próprios comandos.

eu encontrei

#!/bin/bash -x

mas isso não é exatamente a mesma coisa porque em vez de

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

isto mostra

+ mysql -v dbname
+ grep 'CREATE TABLE'

Responder1

Usar bash -v.

Este é o roteiro:

#!/bin/bash -v

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

echo "Done."

Esta é a saída:

#!/bin/bash -v

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

echo "Done."
Done.

Infelizmente, não existe um marcador especial PS4para imprimir comandos expandidos. Você pode combinar ambos para identificar rapidamente os comandos:

#!/bin/bash -vx

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

echo "Done."
+ echo Done.
Done.

Responder2

set -x é outra maneira de fazer isso.

$ cat a.sh
#!/bin/bash

set -x
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."

A saída será:

sh a.sh
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
+ echo Done.
Done.

Responder3

set -xé equivalente a "eco ativado"

set +xé equivalente a "eco desligado"

informação relacionada