эквивалент "echo on" для Linux?

эквивалент "echo on" для Linux?

Как мне вывести на стандартный вывод все команды, которые выполняются в скрипте bash?

То есть вывод должен содержать вывод команд И сами команды.

я нашел

#!/bin/bash -x

но это не совсем то же самое, потому что вместо

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

это показывает

+ mysql -v dbname
+ grep 'CREATE TABLE'

решение1

Использовать bash -v.

Вот сценарий:

#!/bin/bash -v

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

echo "Done."

Вот что получилось:

#!/bin/bash -v

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

echo "Done."
Done.

К сожалению, нет специального маркера, например, PS4для печати расширенных команд. Вы можете объединить оба, чтобы быстро идентифицировать команды:

#!/bin/bash -vx

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

echo "Done."
+ echo Done.
Done.

решение2

set -x — это другой способ сделать то же самое.

$ cat a.sh
#!/bin/bash

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

Вывод будет следующим:

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

решение3

set -xявляется эквивалентом "эха"

set +xэквивалентно "эхо выключено"

Связанный контент