equivalent "echo on" for linux?
44,199
Solution 1
Use bash -v
.
This is the script:
#!/bin/bash -v
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."
This is the output:
#!/bin/bash -v
echo "Hello, World" | sed 's|Hello|Goodbye|'
Goodbye, World
echo "Done."
Done.
Unfortunately, there is no special marker like PS4
for printing expanded commands. You could combine both though to quickly identify commands:
#!/bin/bash -vx
echo "Hello, World" | sed 's|Hello|Goodbye|'
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
echo "Done."
+ echo Done.
Done.
Solution 2
set -x is other way of doing it.
$ cat a.sh
#!/bin/bash
set -x
echo "Hello, World" | sed 's|Hello|Goodbye|'
echo "Done."
Output will be:
sh a.sh
+ echo 'Hello, World'
+ sed 's|Hello|Goodbye|'
Goodbye, World
+ echo Done.
Done.
Solution 3
set -x
is an equivalent of "echo on"
set +x
is an equivalent of "echo off"
Related videos on Youtube
Author by
Putnik
Updated on September 18, 2022Comments
-
Putnik over 1 year
How can I get to stdout all commands that run in bash script?
That is output must contain commands output AND commands themselves.
I found
#!/bin/bash -x
but this is not exactly the same because instead of
mysql -v dbname < dump.sql | grep "CREATE TABLE"
it shows
+ mysql -v dbname + grep 'CREATE TABLE'
-
HikeMike over 12 yearsWhich is kind of what the OP dismissed as useless right in his question...
-
Putnik about 12 years@Ashok Could you please explain? I can't see the difference: here p.s.: GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu) Ubuntu 10.04.3
-
HikeMike about 12 years@Putnik It's the same basic thing, but you can
set -x
anywhere in the script, and even deactivate it again. So if you only want it on theecho "Done"
line, putset -x
just before that one. -
studioj over 2 yearslanded here through a search engine, found your answer helpful. Thx
-
studioj over 2 yearslanded here through a search engine, found your answer helpful. Thx