Использование key-value хранилища в Bash

Allsoft

Во многих языках программирования одной структур являются словарь позволяющий хранить набор объектов ключ и значение. Другими словами есть в словарь где хранится набор ключей, и каждый ключ имеет значение, связанное с ним. Структура словаря оптимизирована для быстрого поиска значений на основе их ключей, поэтому она часто реализуется с помощью хеш-таблиц.

Объявить переменную словаря в Bash

Переменные в bash не строго типизированы. Например, переменную bash можно рассматривать как строки или целые числа, можно обеспечить типичное поведение в bash, объявив "атрибут" переменной.

declare -A key_value_var

Добавление пар ключ-значение в словарь в Bash

Добавить строковые ключ / значение без кавычек

key_value_var[key1] = value1

Добавить строковые ключ / значение в кавычки

key_value_var['key2'] = 'value2'

Добавить пару ключ / значение, используя переменные bash

key_var = 'key3'
value_var = 'value3'
key_value_var[$key_var] = $value_var

Получение пар ключ-значение из словаря в Bash

Для получения значения переменной, по ключу, необходимо добавить знак $ и фигурные скобки, в противном случае вернется ключ

echo ${key_value_var[key1]}
echo ${key_value_var[key2]}
echo ${key_value_var[$another_key_var]}

Обновление существующей пары "ключ-значение" в словаре в Bash

Обновление существующей пары "ключ-значение" (Изменение значения существующего ключа) с точки зрения синтаксиса ничем не отличается от вставки новой пары "ключ-значение". При обновлении существующее значение просто перезаписывается новым значением.

key_value_var[key1]='Another value of a variable '

 

Проверка существования ключа в словаре в Bash

if [ -v key_value_var[key1] ]; then
      echo "key1 exists"
fi

if [ ! -v key_value_var[key2] ]; then
    echo "key2 does not exists"
fi

 

Удаление пары ключ-значение из словаря в Bash

Для удаления значений из словаря, используется оператор unset

unset key_value_var[key1]
unset key_value_var['key2']
unset key_value_var[$key_var]

Перебор ключ-значение из словаря в Bash

Другой часто используемой функцией является перебор всех пар ключ-значение, хранящихся в словаре, и выполнение некоторых действий.
Нужно заключить переменную ${!test_var[@]} в цикле "кавычками", чтобы безопасно обрабатывать ключи, содержащие пробелы.

for key in "${!key_value_var[@]}"; do 
    echo "$key ${key_value_var[$key]}" 
done
Добавить комментарий