Bash:只读关联数组,可以修改但不能扩展

dim*_*mid 1 bash

我想用一组键和值初始化一个数组,这样值可以更改,但不能添加新键。

spb*_*ick 5

似乎没有办法直接做到这一点。作为替代,您可以将带有键(索引)的只读关联数组放入另一个保留值的非只读数组中。

这样,就无法将新键添加到前数组,即使可以将新键添加到后数组,也无法通过前数组键访问它们。

像这样的东西:

declare -r -A front=([a]=0 [b]=1 [c]=2)
declare -a back=(alpha beta gamma)
# Read
echo "${back[front[a]]}"
# Write
back[front[a]]="ALPHA"
# Iterate
for k in "${!front[@]}"; do echo "$k = ${back[front[$k]]}"; done
Run Code Online (Sandbox Code Playgroud)

然后您可以将其包装到函数接口中。