难以从实时MQTT源回显

时间:2015-04-10 06:06:16

标签: bash shell echo

我无法通过echo看到通过MQTT / mosquitto流收到的内容。

我的代码如下:

#!/bin/bash

`mosquitto_sub -d -t +/# >>mqtt_log.csv`

mqtt_stream_variable=`sed '$!d' mqtt_log.csv`

echo "$mqtt_stream_variable"

第一行订阅mqtt流并将输出附加到mqtt_log.csv文件。然后我sed '$!d' mqtt_log.csv所以我得到分配给mqtt_stream变量的最后一行值,我稍后回应这个。

当我执行此操作时 - 我没有看到任何echo我很想知道如何做到这一点?当我cat mqtt_log.csv时,那里有东西。所以mosquitto_sub -d -t +/# >>mqtt_log.csv部分正在运作。它只是echo存在问题。


理想情况下,mqtt_stream=``sed '$!d' mqtt_log.csv之后,我想要使用mqtt_log.csv中的值[因为它是一个csv字符串]。因此,通过echo,我可以看到mqtt_stream_variable变量的含义

1 个答案:

答案 0 :(得分:0)

mosquitto_sub命令永远不会返回,sed会在写入任何消息然后退出之前读取空文件。

这样的事情

#!/bin/bash
mosquitto_sub -d -t +/# | tee -a mqtt_log.csv | sed '$!d'

不需要所有子弹壳和管道都能满足您的需求。

唯一的另一件事是为什么在这个话题中需要两张外卡? + /#应该与#相同(你可能需要在引号上包装#)