存储Bash关联数组

Alf*_*lfe 2 arrays bash associative-array data-retrieval storing-information

我想存储(并检索)Bash的关联数组,我正在寻找一种简单的方法来实现这一点.

我知道可以通过查看所有键来实现它:

for key in "${!arr[@]}"
do
  echo "$key ${arr[$key]}"
done
Run Code Online (Sandbox Code Playgroud)

检索它也可以在循环中完成:

declare -A arr
while read key value
do
  arr[$key]=$value
done < store
Run Code Online (Sandbox Code Playgroud)

但我也看到set会以这种风格打印一个版本的数组:

arr=([key1]="value1" [key2]="value2" )
Run Code Online (Sandbox Code Playgroud)

(不幸的是还有所有其他的shell变量.)

有没有比我提出的循环更简单的存储和检索关联数组的方法?

Ada*_*ers 6

要保存到文件:

declare -p arr > saved.sh
Run Code Online (Sandbox Code Playgroud)

(如果您愿意,也可以使用typeset而不是declare.)

要从文件加载:

source saved.sh
Run Code Online (Sandbox Code Playgroud)