我无法通过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
变量的含义
答案 0 :(得分:0)
mosquitto_sub命令永远不会返回,sed会在写入任何消息然后退出之前读取空文件。
这样的事情
#!/bin/bash
mosquitto_sub -d -t +/# | tee -a mqtt_log.csv | sed '$!d'
不需要所有子弹壳和管道都能满足您的需求。
唯一的另一件事是为什么在这个话题中需要两张外卡? + /#应该与#相同(你可能需要在引号上包装#)