1

Я хочу хранить (и извлекать, конечно) ассоциативные массивы 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") 

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

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

ответ

5

Чтобы сохранить в файл: (. Вы можете также использовать typeset вместо declare, если вы предпочитаете)

declare -p arr > saved.sh 

Для загрузки из файла:

source saved.sh