【发布时间】:2021-07-08 10:08:09
【问题描述】:
我编写了一个 bash 脚本,它使用 cat 将一个文件的内容写入另一个文件。但是我希望正在写入的文件被清空,基本上每次都被写入。我当前的代码只在启动时清空文件。
代码:
#!/bin/ash
while true
do
cat /dev/rs232 > /tmp/regfile
> /dev/rs232
sleep 1
> /tmp/regfile
done
编辑:
为了使目的可能更清楚一点,我试图用另一个程序读取/tmp/regfile(将输出发布到MQTT代理),它没有能力直接读取/dev/rs232(所以我的程序是应该是解决方法)。 /dev/rs232 不断收到一个新字符串。 sleep 1 是因为它只能每秒发布一次。
【问题讨论】:
-
这是使用
fifo的目的 -
问题不是很清楚......如果你这样做
cat something > file>每次都会覆盖文件......如果你想追加,你应该这样做>> -
emptied, essentially everytime it has been written into所以文件总是空的?这是XY问题吗?你想ex。而是保留文件中的最后一行? -
你可以写信给
/dev/null;首先写信给/tmp/regfile的目的还不清楚。你有没有尝试阅读/tmp/regfile的内容? -
sleep 1 so the mqtt publisher has time to publish不要使用睡眠作为同步。采用真正的同步机制。