当MQTT消息“1”到达时,我需要执行一个shell脚本,我如何使用bash脚本来执行这个任务?
我认为这与“边听边听”有关;否则,我不知道应该使用什么语法。
到目前为止,我只有订阅。
#!/bin/bash
mosquitto_sub -t "1999-Connect"以下每项建议
#!/bin/bash
mosquitto_sub -t "1999-Connect"
If message ="1" sudo bash update.sh
else
restart script.发布于 2019-07-06 16:20:22
似乎我的变量概念很接近,但我想写入文件比写入变量要容易得多。
将传入的命令写入名为task的文件:
mosquitto_sub -h SERVER -t '/TOPIC/' >> task然后读取该文件,并使用以下脚本执行最后一个命令:
NUMOFLINES=$(wc -l < task)
while :
do
NEWLINE=$(wc -l < task)
if [ "$NEWLINE" -gt "$NUMOFLINES" ]
then
NUMOFLINES=$(wc -l < task)
LASTCOMMAND=$(tail -n 1 task)
eval ./$LASTCOMMAND
fi
done发布于 2021-06-04 20:49:00
#!/bin/bash
while read -u 10 m
do
case "$m" in
1)
echo "Option 1 received"
;;
*)
echo "Message: $m"
;;
esac
done 10< <(mosquitto_sub -h localhost -t 'StarCommand')" 10“与文件描述符10相关,因此您可以始终使用描述符2和3 (stdout和stderr)。
https://stackoverflow.com/questions/56914969
复制相似问题