Linux 将sh脚本输出重定向到两个日志,一个带有-x,另一个不带-x
是否可以运行一次脚本并将其写入两个日志。一个日志将是详细的,并将有-x选项的输出。另一个日志不会详细说明,只有常规输出,没有-x选项?Linux 将sh脚本输出重定向到两个日志,一个带有-x,另一个不带-x,linux,bash,Linux,Bash,是否可以运行一次脚本并将其写入两个日志。一个日志将是详细的,并将有-x选项的输出。另一个日志不会详细说明,只有常规输出,没有-x选项?set-x有一个奇妙的功能,它的输出实际上不是打印到stdout,而是打印到stderr 因此,如果你有 myscript.bash 1> log 2> xlog 使用脚本中的set-x,因此log包含常规输出和xlog调试命令的输出、+和错误 如果您想要一个包含所有输出的文件,并且只有一个常规输出,那么这可能会更加困难,我认为需要在最后编辑日志。下
set-x
有一个奇妙的功能,它的输出实际上不是打印到stdout
,而是打印到stderr
因此,如果你有
myscript.bash 1> log 2> xlog
使用脚本中的set-x
,因此log
包含常规输出和xlog
调试命令的输出、+
和错误
如果您想要一个包含所有输出的文件,并且只有一个常规输出,那么这可能会更加困难,我认为需要在最后编辑日志。下面是一个包装器脚本,它接受另一个要运行的脚本:
#!/bin/bash
set -x
. $1 &> full.log
set +x
sed '/^+.*/d' full.log > out.log
你在哪里打电话
wrap.sh myscript.sh
这样做的缺点是,任何以
+
开头的行都会被删除,这可能是不够的。使用进程替换可能有更好的解决方案,但我想不出一种方法可以保持stdout
和stderr
之间的顺序。您可以基于一些布尔值编写一个函数,用于记录日志。你所说的-x
是什么意思?