【发布时间】:2020-12-29 09:35:00
【问题描述】:
我正在尝试创建此关联数组,但由于volumeClaimTemplates[0] 而引发错误
这是我的代码:
declare -A example=(["'spec.statefulSet.spec.volumeClaimTemplates[0].spec'"]="TEST")
这是错误:
['spec.statefulSet.spec.volumeClaimTemplates[0].spec']=TEST: bad array subscript
如果我从volumeClaimTemplates 中删除[0],则不会出现错误。
【问题讨论】:
-
尝试转义方括号 - 即
\[0\]。 -
无法在 bash 5.0 中重现。
-
转载于
docker run bash:4.2。我相信在较旧的 bash 版本中,数组下标仅限于某些字符集。 @kooreshakhbari 这是一个问答论坛。你在帖子中没有问任何问题。本着本论坛的精神,您能补充一个问题吗?似乎]字符是问题 -declare -A a=(["]"]=1) -
您是否尝试使用关联数组来模拟嵌套对象?也许你应该使用已经拥有它们的语言。
-
如果我
printf %q\\n "'spec.statefulSet.spec.volumeClaimTemplates[0].spec'"它输出 →\'spec.statefulSet.spec.volumeClaimTemplates\[0\].spec\'。我会以同样的方式简单地引用关联数组键:declare -A example=([\'spec.statefulSet.spec.volumeClaimTemplates\[0\].spec\']="TEST")
标签: bash associative-array bash4