我试图将stderr输出重定向到bash脚本中的文件,并且对于写入的每个错误输出,我想添加包含当前脚本名称和时间戳的前缀 . 这就是我这样做的方式:
exec 2> >(sed "s/^/\n$(date +'%Y%m%d%H%M%S') - JOB: $(basename $BASH_SOURCE)\n\n/" >&2) 2>> file.log
echo This goes to stderr >&2
我使用了this其他帖子中的信息,最后的重定向是 >> file.log
而不是 2>> file.log
,但如果我这样做,那么我在控制台上获得stderr(前缀也被添加),文件中的stdout .
这就是为什么我在 2>> file.log
中添加了 2
,因为sed替换也输出到stderr,所以这样重定向工作正常,但是没有添加前缀 . 所以不要得到:
20170729100156 - JOB: script.sh
This goes to stderr
我只得到:
This goes to stderr
任何人都可以推荐一个解决方案,或者为什么会这样?谢谢 .
1 回答
为什么不直接将
sed
的输出直接重定向到日志文件?