【发布时间】:2016-09-20 16:09:01
【问题描述】:
我有一个如下所示的 unix shell 脚本。我想在 out.log 的每一行前面附加一个时间戳。一般的解决方案是创建另一个脚本 preappend.sh 并像这样执行脚本:
(./a.sh 2>&1 ) | ./b.sh > out.log
然而,原来的 shell 脚本有一行 exec 2>out.log(我已经在下面对此进行了注释以供我之前的测试使用)。在现实生活中,这条线没有评论。当有exec 2> 到位时,有人可以教我如何在 out.log 中预先附加时间戳吗?
本尼
------ my script a.sh ---------
#!/bin/sh
#exec 2>out.log
set -x
echo 'hello world'
sleep 2
echo 'you rocks'
------end---------
---- preappend.sh ---
#!/bin/bash
while read line ; do
echo "$(date '+%Y%m%d %H:%M:%S'): ${line}"
done
-------end------------
【问题讨论】:
-
如果我用这个替换
exec 2> out.log。它会起作用的。 exec 2> >(while read line ; do echo "$(date '+%Y%m%d %H:%M:%S'): ${line}"; done > out.log) 但是有没有不编辑 a.sh 的方法?