我想知道如何将关联数组中的键范围设置为特定值。
declare -A array
array=(
['key1']="value1"
['key2']="value2"
['key3']="value3"
)
我可以使用以下方法回显一系列数组:
echo ${array[@]:0:2}
它输出:
value2 value3
但是,如何一次更改多个值以保持代码干燥呢?使用类似或不同的方法?例如一个理论例子:
${array[@]:0:2}="newvalue"
将key2和key3更改为
['key2']="newvalue"
['key3']="newvalue"
${array[@]:0:2}
并不意味着对关联数组特别有用-它以bash认为合适的某种顺序获取值列表(先入先出,后进先出,哈希顺序,按索引字母顺序或按值字母顺序? ?)并打印其中的2个,但关联数组的全部要点是,即使您确实知道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" )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句