在命令的每个输出行前添加时间戳



我有这个脚本,它应该在命令的每个输出行前加上时间戳:

$command 2>&1 | while IFS= read -r line; do printf '[%s] %sn' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done 

它在大多数情况下工作正常,但我有一个特定的情况,我有一个问题。

让我们以这个为例:

read -rep "Your age: " age | while IFS= read -r line; do printf '[%s] %sn' "$(date '+%Y-%m-%d %H:%M:%S')" "$line"; done

在这种情况下,时间戳没有被附加。

我理解这里的问题是没有到达换行,所以不打印换行符。我想知道是否有可能在接收到所有字符时打印它们,然后在我们得到换行符后打印时间戳。

这里的问题是read命令没有向stout写入任何内容,因此while循环没有要处理和循环的输出。通过添加年龄的回显,您可以得到所需的结果。

read -rep "Your age: " age;
echo $age | while IFS= read -r line; 
do 
printf '[%s] %sn' "$(date '+%Y-%m-%d %H:%M:%S')"; 
done

相关内容

  • 没有找到相关文章

最新更新