【问题标题】:bash Iterate over a hash tablebash 遍历哈希表
【发布时间】:2019-04-11 20:31:04
【问题描述】:

我已将函数的输出读入变量。

数据是这样的

---
data:
  pkg:
    -
      NAME: 'bob'
      FEATURE: Big
    -
      NAME: 'sue'
      FEATURE: Tall
    -
      NAME: 'jim'
      FEATURE: Slim

我看到了遍历数组的示例。 这些示例总是手动创建数组。

有没有办法将散列转换为数组?我怎么做?或者我可以用这种形式处理吗?

我想回应每个 pkg 的 FEATURE。

【问题讨论】:

  • 你没有见过像arrayName[$key]=$value这样动态创建数组元素的例子吗?
  • 为什么你认为你需要一个多维数组? Bash 没有。
  • 好吧,如果你真的需要bash中的数据结构,你必须“模拟”多维数组。如果我需要 echo YML 中某个字典键的所有值,我会使用 grepsed
  • 您应该切换到具有真正 YAML 解析器的语言; grepsed 是不够的。
  • 使用yq 可能很简单。

标签: bash shell for-loop multidimensional-array


【解决方案1】:

您示例中的 yaml 表示字典数组。 Bash 不做任何类型的多维数组。

但是,您可以通过将数据解析为并行数组来模拟结果,这样bob${name[0]} 的零索引对应于Big${feature[0]}

真正的问题是手动解析 YAML,我不建议这样做。

如果您真的需要深入研究,请查看this discussion,其中有一些选项。

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 2014-06-01
    • 2012-04-21
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多