如何更新bash3关联数组中的值?

时间:2012-07-30 02:42:57

标签: bash map

我想在此bash3地图中将louis的值修改为green

ARRAY=( "nicolas:red"
    "louis:blue" )

我试图用ARRAY+=("louis:green")覆盖,但它不起作用:我最终得到一个带有重复键的3元素数组。

注意:我无法使用bash4的现代地图,所以我必须使用bash3 associative arrays

1 个答案:

答案 0 :(得分:1)

这只是一个常规(整数)索引数组。您将不得不迭代它以找到要替换的正确索引。 (这也适用于添加新元素,因为索引将超过现有数组的末尾。)

for ((i=0; i<${#ARRAY[*]}; i++)); do
    [[ ${ARRAY[i]} = louis:* ]] && break
done
ARRAY[i]=louis:green