簡體   English   中英

在shell腳本中:在執行時重定向echo shell命令

[英]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 -xset -v結果打印的文本set -v被寫入stderr。 如果要將所有輸出都發送到bla.log,請執行以下操作:

exec > bla.log 2>&1
set -v 
echo bla 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM