![equivalente "echo on" para Linux?](https://rvso.com/image/1304086/equivalente%20%22echo%20on%22%20para%20Linux%3F.png)
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 PS4
para 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"