Есть ли способ создать пары ключ-значение в скрипте Bash?
Я пытаюсь создать словарь пары ключевых значений с помощью скрипта Bash. Я пытаюсь использовать эту логику:
declare -d dictionary
defaults write "$dictionary" key -string "$value"
...где $dictionary - это переменная, но это не работает.
есть ли способ создать пары ключ-значение в скрипте Bash?
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