【发布时间】:2018-01-17 05:49:04
【问题描述】:
我认为我不能谷歌这个答案的原因是因为我不知道要使用的术语。如果这篇文章令人沮丧,请道歉。
我要创建的是一个多部分变量的数组;这样一组关键字就可以对应一个对应的MQTT主题。背景(与问题无关) - 我打算将自然口语转换为自动化触发器;一旦我有了我的表,一个函数可以将口语句子与我尝试创建的数组/表进行比较,如果关键字匹配,则发送相应的 MQTT 消息。我想使用这种表格/数组的方法,以便于整体解决方案的更新。
在某种想象的语言中,构建此类表的代码可能如下所示:
declare -a commandarray
{"keywords":"'lounge tv on'","mqtt":"lounge/tv{on}"} >> $commandarray
{"keywords":"'lounge tv off'","mqtt":"lounge/tv{off}"} >> $commandarray
{"keywords":"'bedroom tv on'","mqtt":"bedroom/tv{on}"} >> $commandarray
{"keywords":"'bedroom tv off'","mqtt":"bedroom/tv{off}"} >> $commandarray
我猜结果将是一个列标题为“keywords”和“mqtt”的表格,可能会显示为这样。我不在乎它如何显示,这只是为了帮助解释自己。
keywords mqtt
-------- --------
lounge tv on lounge/tv{on}
lounge tv off lounge/tv{off}
bedroom tv on bedroom/tv{on}
bedroom tv off bedroom/tv{off}
任何帮助将不胜感激!
【问题讨论】:
-
为什么这必须在 bash 中完成?只需选择您选择的脚本语言。
-
bash 是最自然的选择——这适用于家庭自动化,并且 docker 容器被剥离得非常少。我确实找到了那个链接,但它并没有真正涵盖我所追求的(谢谢)。我认为我正在寻找的术语是“哈希表” - 现在谷歌搜索..
-
我开始认为我应该创建一个单独的 csv 文件。
-
与哈希表最接近的 bash 是关联数组(仅限 bash v4)。但是关联数组中的条目只是文本,而不是更复杂的数据结构。 bash 并没有真正有 数据结构,只是存储文本字符串的各种方式。如果您尝试做任何稍微复杂的事情,那么您真的应该使用 bash 以外的几乎任何语言。你有 Python 吗? Perl?
-
感谢 Gordon 的确认,我以为我的 google 技能坏了!是的,bash 让事情变得更加困难,但在 docker 容器中,我努力让事情尽可能地纯净。