Подтвердить что ты не робот

Есть ли способ создать пары ключ-значение в Bash script?

Я пытаюсь создать словарь пары значений ключа, используя Bash script. Я пытаюсь использовать эту логику:

declare -d dictionary
defaults write "$dictionary" key -string "$value"

... где $dictionary - переменная, но это не работает.

Есть ли способ создать пары ключ-значение в Bash script?

4b9b3361

Ответ 1

В bash версии 4 были введены ассоциативные массивы.

declare -A arr

arr["key1"]=val1

arr+=( ["key2"]=val2 ["key3"]=val3 )

Теперь массив arr содержит три пары ключевых значений. bash довольно ограничен, что вы можете с ними сделать, но не сортировать или выскакивать и т.д.

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

Перевернет все значения клавиш и вышлет их.

Ответ 2

Если вы можете использовать простой разделитель, это очень простой oneliner:

for i in a,b c_s,d ; do 
  KEY=${i%,*};
  VAL=${i#*,};
  echo $KEY" XX "$VAL;
done

Здесь i заполняется символьными последовательностями, такими как "a,b" и "c_s,d". каждая из которых разделена пробелами. После do мы используем замену параметров для извлечения части перед запятой , и частью после нее.

Ответ 3

Для постоянного хранения ключей/значений вы можете использовать kv-bash, чистую bash реализацию базы данных ключ/значение, доступную по адресу https://github.com/damphat/kv-bash

Использование

git clone https://github.com/damphat/kv-bash
source kv-bash/kv-bash

Попробуйте создать некоторые постоянные переменные

kvset myName  xyz
kvset myEmail [email protected]

#read the varible
kvget myEmail

#you can also use in another script with $(kvget keyname)
echo $(kvget myEmail)