linux - BASH - 如果时间有“空间”,Mosquitto_pub 命令会引发错误,我的代码有问题
问题描述
嗨,我是一个奇怪的场景
如果我在终端中手动发送以下命令,它运行良好
root@VPRT:/home/root# mosquitto_pub -h localhost -p 1883 -q 1 -d -t test -i localClientID -m '2020-07-14 15:03:27'
但是当从 Bash 脚本发送时,我得到了错误
Error: Unknown option '15:03:27''.
我的外壳脚本是:
#!/bin/bash
mqttcmd="mosquitto_pub -h localhost -p 1883 -q 1 -d -t test -i localClientID -m "
dateformat="%Y-%m-%d %H:%M:%S"
function my_date {
date "+${dateformat}"
}
while true; do
today=$(my_date)
echo "today : " $today
mystring="$mqttcmd"
mystring+="'"
mystring+="$today"
mystring+="'"
#print
echo ${mystring}
#publish
${mystring}
sleep 5
done
如果我发送从脚本中打印的相同命令,它可以工作,但从 shell 我得到错误。错误只发生在日期格式上。如果我从脚本发送任何其他文本,它就可以工作。如果我在日期和时间之间添加空格,则会出错。
如果手动发送,我很困惑与空间作品的同一日期
解决方案
正如@Gordon Davisson 所建议的,它奏效了。
您可以将变量用作命令的一部分(但在它们周围加上双引号),但不要将命令放在变量中。对于您的脚本,删除 mqttcmd 和 mystring 变量,然后运行 mosquitto_pub -h localhost -p 1883 -q 1 -d -t test -i localClientID -m "$today" – Gordon Davisson
推荐阅读
- c# - 如何构建一个每隔几个小时发布一条推文的 Twitter 应用程序
- c# - foreach 语句不会将值添加到列表中
- django - 如何在 django 的详细视图上仅显示用户在外键中输入的相关数据
- python - 从包含列表的json中提取值作为键的值
- javascript - 路由更改导致的属性更改不会更新视图 - *ngIf
- c - 如何将文本字符串转换为 C 中的 int 以查找其中的部分?
- pine-script - Tradingview 仅显示上周 Quandl CFTC 数据
- android - 无法让 Admob 测试横幅显示在应用程序上
- ios - 如何检查用户输入的答案是否有字母,如果有,您如何将该答案默认为 0?
- c - 如何从fgetc将重复的空字符存储在C中的字符串中?