Bash 如何设置关联数组的范围';s值的键

Bash 如何设置关联数组的范围';s值的键,bash,associative-array,Bash,Associative Array,我想知道如何将关联数组中的键范围设置为特定值 declare -A array array=( ['key1']="value1" ['key2']="value2" ['key3']="value3" ) 我可以使用以下方法回送一系列阵列: echo ${array[@]:0:2} 它输出: value2 value3 但是,我如何一次更改多个值以保持代码干燥?使用类似或不同的方法?例如,理论上的例子: ${array[@]:0:2}="newvalue" 将键2和键3更改为 ['ke

我想知道如何将关联数组中的键范围设置为特定值

declare -A array
array=(
['key1']="value1"
['key2']="value2"
['key3']="value3"
)
我可以使用以下方法回送一系列阵列:

echo ${array[@]:0:2}
它输出:

value2 value3
但是,我如何一次更改多个值以保持代码干燥?使用类似或不同的方法?例如,理论上的例子:

${array[@]:0:2}="newvalue"
将键2和键3更改为

['key2']="newvalue"
['key3']="newvalue"

${array[@]:0:2}
对于关联数组并不意味着任何特别有用的东西-它是按照bash认为合适的顺序获取值列表(先进先出?先进后出?哈希顺序?按索引的字母顺序?按值的字母顺序?其他什么?)打印其中两个,但关联数组的全部要点是,即使您碰巧知道bash存储它们的顺序,这些值也只与命名索引相关,而不是它们在内部的存储顺序或其他任何内容,因此打印或更新关联数组的N个值中的2个(而不是通过它们的索引名)是没有意义的

$ cat tst.sh
#!/bin/env bash

declare -A array
array=(
    ['key1']='value1'
    ['key2']='value2'
    ['key3']='value3'
)

for key in key1 key2; do
    array["$key"]='newvalue'
done

declare -p array

$ ./tst.sh
declare -A array=([key3]="value3" [key2]="newvalue" [key1]="newvalue" )

确保阅读:如果所说的答案足够好,你应该接受你过去问题的答案。谢谢你的评论,我会对之前的每个问题和未来的任何问题都这样做。