将 mosquitto_sub 的输出重定向到 .txt 文件并在每次更新时覆盖

redirect output from mosquitto_sub to .txt file and overwrite with each update

我正在尝试从 mosquitto_sub 命令的重定向创建一个 .txt 文件。我希望每次从 MQTT 接收到新数据时都覆盖该文件。 这不起作用:

mosquitto_sub -h 192.168.1.10 -t "application/7/device/a8404117b18312e9/rx" > newtest.txt

这会在收到的每个新数据上附加输出。我只需要最新的文件。 我不是程序员,所以我可能缺少一些简单的东西。 提前致谢 背景

您可能在这里做的最好的事情是将 -C 标志设置为 1,这将使客户端在第一条消息后退出,并将命令置于 shell 脚本的循环中.

如果发布率足够高,这确实有可能错过消息。

您还需要为重定向使用一个临时文件,因为它会在重定向开始后立即将重定向目标归零。

例如

#!/bin/bash

while true; do
  mosquitto_sub -C 1 -h 192.168.1.10 -t "application/7/device/a8404117b18312e9/rx" > temp.txt
  mv temp.txt newtest.txt
done