¿"eco activado" equivalente para Linux?

¿"eco activado" equivalente para Linux?

¿Cómo puedo obtener la salida estándar de todos los comandos que se ejecutan en el script bash?

Es decir, la salida debe contener la salida de comandos Y los comandos mismos.

encontré

#!/bin/bash -x

pero esto no es exactamente lo mismo porque en lugar de

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

muestra

+ mysql -v dbname
+ grep 'CREATE TABLE'

Respuesta1

Usar bash -v.

Este es el guión:

#!/bin/bash -v

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

echo "Done."

Esta es la salida:

#!/bin/bash -v

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

echo "Done."
Done.

Desafortunadamente, no existe un marcador especial como PS4para imprimir comandos expandidos. Sin embargo, puedes combinar ambos para identificar rápidamente los 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.

Respuesta2

set -x es otra forma de hacerlo.

$ cat a.sh
#!/bin/bash

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

La salida será:

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

Respuesta3

set -xes un equivalente de "eco activado"

set +xes un equivalente de "eco apagado"

información relacionada