Хранение ассоциативных массивов 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