![¿"eco activado" equivalente para Linux?](https://rvso.com/image/1304086/%C2%BF%22eco%20activado%22%20equivalente%20para%20Linux%3F.png)
¿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 PS4
para 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 -x
es un equivalente de "eco activado"
set +x
es un equivalente de "eco apagado"