【发布时间】:2021-05-06 01:03:09
【问题描述】:
我必须根据我的 API Get 调用来填充我的关联数组。我的脚本是这样的,其中“get_fileshares”是一个定义的函数,它返回一个文件列表,其中包含名称和 ID 作为字段。现在,我想在旅途中填充我的关联数组,这样对于这个 JSON,我的数组应该如下所示 我的数组应该是:
name=07bff899-4440-4ba9-85f5-c3e47555dc0e
name2=07bff899-4440-4ba9-85f5-c3e47555dc02
JSON
"values": [
{
"name": "test",
"id": "07bff899-4440-4ba9-85f5-c3e47555dc0e"
}
{
"name2": "test",
"id": "07bff899-4440-4ba9-85f5-c3e47555dc02"
}
]
declare -A a
n=($(get_fileshares | jq --raw-output '.values[].name'))
aa=($(get_fileshares | jq --raw-output '.values[].id'))
for (( i=0; i<${#n[@]}; i++ )); do
#echo ${d}
a[("${n[i]}")]+=("${aa[i]}")
done
错误:无法将列表分配给数组成员
【问题讨论】:
-
"无法将列表分配给数组成员" -- bash 数组是严格的一维数组。如果您需要更复杂的数据结构,则必须选择另一种语言。
-
但我没有将列表分配为值。我只是将一个键分配给一个值。但很明显,我的关联数组有很多 K,V 对。这在 bash 中可行吗?
-
我打算这样做:a[n[I]]=a[aa[I]]
-
But I am not assigning a list as value- 您正在将数组元素添加到数组元素 -a[...] += ( ... )- bash 中没有二维数组。