Хранение ассоциативных массивов Bash

Я хочу хранить (и извлекать, конечно) ассоциативные массивы Bash и ищу простой способ сделать это.

Я знаю, что это можно сделать, просматривая все ключи:

for key in "${!arr[@]}"
do
  echo "$key ${arr[$key]}"
done

Получить его также можно в цикле:

declare -A arr
while read key value
do
  arr[$key]=$value
done < store

Но я также вижу, что set распечатает версию массива в этом стиле:

arr=([key1]="value1" [key2]="value2" )

(К сожалению, вместе со всеми другими переменными оболочки.)

Есть ли более простой способ хранения и извлечения ассоциативного массива, чем мой предложенный цикл?

1 ответ

Решение

Чтобы сохранить в файл:

declare -p arr > saved.sh

(Вы также можете использовать typeset вместо declare Если вы предпочитаете.)

Чтобы загрузить из файла:

source saved.sh
Другие вопросы по тегам