Linux 的等效「echo on」?

Linux 的等效「echo on」?

如何取得在 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相當於“迴聲關閉”

相關內容