[英]In a shell script, how to echo shell commands as they are executed to standard output (not standard error)?
[英]In a shell script: redirect echo shell commands as they are executed
這是對shell腳本中問題的擴展:在執行shell命令時回顯shell命令 。
因此,我們可以通過使用set -v
(對於冗長的命令,在擴展之前)或set -x
(對於xtrace的命令,在擴展之后)來回顯命令行。 或兩者都set -vx
。 大。
我的問題是:我們如何重定向這些回顯的行(例如,重定向到文件)?
如果我執行以下幾行,
BLA='xyz'
set -v
echo $BLA > bla.log
,很明顯, bla.log
將包含“ xyz
”,而不是echo“ echo $BLA > bla.log
”。
我顯然需要對shell有更好的了解,以了解發生了什么。 除了“如何重定向”解決方案之外,還需要更深入的解釋。
謝謝
要將xtrace輸出發送到stderr以外的其他位置,可以將BASH_XTRACEFD
設置為打開文件描述符的編號。 例如,這會將xtrace輸出定向到名為xtrace
的文件:
$ exec 19>xtrace; BASH_XTRACEFD=19; set -x
(我從帽子上掏出19,您可以使用任何fd號碼,前提是該號碼不用於其他用途)
由set -x
和set -v
結果打印的文本set -v
被寫入stderr。 如果要將所有輸出都發送到bla.log,請執行以下操作:
exec > bla.log 2>&1
set -v
echo bla
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.