繁体   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