是否可以只运行一次脚本并将其写入两个日志。一个日志将被详细描述,并具有-x选项的输出。其他日志将不作详细说明,仅显示常规输出,而没有-x选项?
答案 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
这有一个缺点,即删除以+
开头的任何行,可能不够,也可能不够。使用进程替换可能会有更好的解决方案,但是我想不出一个可以保留stdout
和stderr
之间的顺序的解决方案。