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



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



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


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



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

624   3  

3 ответов:

в 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

будет цикл по всем ключевым значениям и эхо их.

если вы можете использовать простой разделитель, очень простой 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 мы используем:замена параметра чтобы извлечь часть перед запятой , и часть после него.

для постоянного хранения ключа/значения, вы можете использовать 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)

Comments

    Ничего не найдено.