這是對In a shell script: echo shell commands as they are executed問題的擴展。因此,我們通過使用set -v
(對於擴展之前的詳細信息)或set -x
(對於xtrace,在擴展之後)使用我們的命令行echo'd;或兩個set -vx
。大。在shell腳本中:在執行echo命令時重定向它們
我的問題是:我們如何重定向這些echo'd行(例如文件)?
如果我運行下面的線,
BLA='xyz'
set -v
echo $BLA > bla.log
,顯然,bla.log
將包含 'xyz
',而不是回聲 'echo $BLA > bla.log
'。
我顯然需要更好地瞭解shell,以瞭解這裏發生了什麼;除了'howto redirect'解決方案之外,還將非常感謝更深入的解釋。
由於
在'慶典'4.1或更高版本,您可以讓shell爲您選擇一個未使用的描述符:'exec {foo}> xtrace; BASH_XTRACEFD = $ foo的;設置-x'。從'bash' 4.3開始,你可以縮短到'exec {BASH_XTRACEFD}> xtrace;設置-x'。 (無論如何,'BASH_XTRACEFD'需要4.1。) – chepner