将sh脚本输出重定向到两个日志,一个带有-x,一个没有-x

时间:2019-01-08 11:05:33

标签: linux bash

是否可以只运行一次脚本并将其写入两个日志。一个日志将被详细描述,并具有-x选项的输出。其他日志将不作详细说明,仅显示常规输出,而没有-x选项?

1 个答案:

答案 0 :(得分:2)

set -x有一个很棒的东西,它的输出实际上不是打印到stdout,而是打印到stderr

因此,如果有

myscript.bash 1> log 2> xlog

在脚本中带有set -x,因此log包含常规输出,而xlog包含调试命令+ <cmd>和错误的输出。

如果您想要一个包含所有输出的文件,而一个仅包含常规输出的文件,则可能会更困难,我认为这需要在末尾编辑日志。这是一个接受另一个脚本运行的包装脚本:

#!/bin/bash

set -x
. $1 &> full.log
set +x
sed '/^+.*/d' full.log > out.log

您致电的地方

wrap.sh myscript.sh

这有一个缺点,即删除以+开头的任何行,可能不够,也可能不够。使用进程替换可能会有更好的解决方案,但是我想不出一个可以保留stdoutstderr之间的顺序的解决方案。