我有一个相当简单的脚本(在向每行添加时间戳后,从tty打印内容)。它可以在命令行上很好地输出,但是用>
重定向输出不起作用。为什么不呢?
这是脚本:
#!/bin/bash
awk '{ print strftime("%Y-%m-%d %H:%M:%S |"), $0; }' "$1"
按原样运行它,就像运行timecat /dev/ttyACM0
一样,我在终端中看到了内容。
但是,如果我运行timecat /dev/ttyACM0 > ~/tmp.log
,则什么也不会发生。与tee
相同。该文件在那里,但为空。
脚本中的awk
是否有些奇怪,我如何修改它以使重定向有效?
答案 0 :(得分:3)
所需要做的只是刷新命令中的打印内容,用以下内容替换最后一个脚本行:
awk '{ print strftime("%Y-%m-%d %H:%M:%S |"), $0; fflush(); }' $tty
^^^^^^^^^