【问题标题】:populating a map with GET API call results使用 GET API 调用结果填充地图
【发布时间】:2021-05-01 17:10:39
【问题描述】:

我有一个脚本,它返回一些我想放入地图的 uuid。但是,看起来当我运行这个脚本时,它只使用整个 uuid 列表中的第一个值填充我的地图。我究竟做错了什么? hydra_get_fileshares 是一个预定义函数,它调用 GET API 来获取 uuid 列表。另外,我正在使用 bash 3

nodes=($(hydra_get_fileshares | jq --raw-output '.values[].id'))
for d in "${nodes[@]}"; do
    ARRAY=( "d:${d}")
done

【问题讨论】:

  • ARRAY+=( "d:${d}")

标签: bash associative-array


【解决方案1】:

虽然我会直接使用while read 循环和ProSub 解析您的命令输出。

#!/usr/bin/env bash

while IFS= read -r d; do
  array+=("d:$d")
done < <(hydra_get_fileshares | jq --raw-output '.values[].id')

带有数组分配的+= 是一种变通/解决方案,在任何人甚至可以说mapfile 又名readarray 之前,它不是bashv3 的一部分。

PARAMETERS 部分下引用 bash 手册。

在赋值语句为 shell 变量或数组索引赋值的上下文中,+= 运算符可用于追加或添加到变量的前一个值

【讨论】:

  • 谢谢,那么如何遍历“数组”来读取地图值?
  • while read 循环之外使用for loop 循环通过"${array[@]}"
  • 但是我有一种感觉,你正在寻找一个 associative array ,这也不是 bashv3 的一个特性......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2015-01-01
  • 1970-01-01
  • 2022-11-16
  • 2016-03-21
相关资源
最近更新 更多