我有一个相当简单的脚本(在向每一行添加时间戳后从 tty 打印内容)。它在命令行上输出很好,但使用 >
重定向输出不起作用。为什么不呢?
这是脚本:
#!/bin/bash
awk '{ print strftime("%Y-%m-%d %H:%M:%S |"), $0; }' "$1"
按原样运行,例如 timecat /dev/ttyACM0
工作正常,我在终端中看到了内容。
但是如果我运行 timecat /dev/ttyACM0 > ~/tmp.log
,什么也没有出来。与 tee
相同。文件在那里,但它是空的。
awk
有什么奇怪的吗?在脚本中,如何修改它以使重定向起作用?
最佳答案
所需要做的就是刷新命令中的打印,用以下内容替换最后一个脚本行:
awk '{ print strftime("%Y-%m-%d %H:%M:%S |"), $0; fflush(); }' $tty
^^^^^^^^^
关于bash - 仅当重定向到管道或文件时 awk 才没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58997739/