【问题标题】:Bash 4.2 Associative arrays throws "bad array subscript" errorBash 4.2 关联数组抛出“坏数组下标”错误
【发布时间】: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


【解决方案1】:

让它像这样工作

declare -A example=(["spec.statefulSet.spec.volumeClaimTemplates[0\].spec.storageClassName"]="TEST"

【讨论】:

    猜你喜欢
    • 2017-07-18
    • 2018-02-12
    • 2014-02-19
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多