Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 难以从实时MQTT提要进行回音_Bash_Shell_Echo - Fatal编程技术网

Bash 难以从实时MQTT提要进行回音

Bash 难以从实时MQTT提要进行回音,bash,shell,echo,Bash,Shell,Echo,我无法通过回音看到通过MQTT/MOSQUITO流接收到的内容 我的代码如下: #!/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文件。然后我说了‘‘‘!d'mqtt_log.csv,因此我获得分配给mqtt_流变量

我无法通过回音看到通过MQTT/MOSQUITO流接收到的内容

我的代码如下:

#!/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文件。然后我说了‘‘‘!d'mqtt_log.csv,因此我获得分配给mqtt_流变量的最后一行值,稍后我将对此进行回应

当我执行此操作时,我没有看到任何回音,我很想知道如何才能做到这一点?当我cat mqtt_log.csv时,其中有一些内容。因此,mosquitto_sub-d-t+/>>mqtt_log.csv部分正在工作。只是回声有问题


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

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

像这样的怎么样

#!/bin/bash
mosquitto_sub -d -t +/# | tee -a mqtt_log.csv | sed '$!d'
不需要所有的子壳和管道就能得到你想要的


唯一的另一件事是为什么在主题中需要两个通配符?+/应该和你自己可能需要用引号括起来一样

我认为你试图使用Mosquito__sub让你的生活变得非常困难。为什么不编写一个简单的Python客户机来完成您想要的工作呢?或者C,Java,…@r我对编程相当陌生,这是因为缺乏经验。有关于如何编写python客户端的任何提示吗?当然,请尝试查看,然后将数据的修改和重新发布添加到on_消息回调中。更一般地说,这些链接:@ralight在回家的路上,我想如果我订阅ie tail文件mqtt_log.csv。因此,第一个程序将把流记录到mqtt_log.csv,第二个程序将跟踪mqtt_log.csv文件。但一个问题是,第二个程序如何知道mqtt_log.csv中有新的数据?我是否会使用while循环,不断跟踪第二个程序的mqtt_log.csv?我遇到的一个困惑是如何将一个变量mqtt_stream_变量分配给输出。我问的原因是,在从mqtt提要接收到输出后,该输出将与mysql一起用于立即更新网站上的各种内容。这就是为什么我需要“操纵”mqtt_流所包含的内容。如有任何进一步建议,我们将不胜感激!非常感谢!在这种情况下,我真的不会在shell脚本中这样做,而是应该在一些功能更强的脚本中,例如javascript或python。因为您将需要一个循环来分割接收到的每条消息的输出