Использование ассоциативных массивов

Bash:
Использование ассоциативных массивов

Как это сделать:

Прежде всего, объявите ассоциативный массив в Bash:

declare -A my_array

Затем, вы можете начать заполнять его значениями, используя строки в качестве ключей:

my_array["name"]="Linux Journal"
my_array["topic"]="Программирование"

Чтобы получить доступ к элементу, используйте его ключ:

echo ${my_array["name"]}  # Выводит: Linux Journal

Итерация по ключам и значениям также проста:

for key in "${!my_array[@]}"; do
    echo "$key: ${my_array[$key]}"
done

Пример вывода может выглядеть так:

name: Linux Journal
topic: Программирование

Чтобы добавить или изменить элементы, просто присвойте значение ключу, аналогично начальному заполнению:

my_array["readers"]="Вы"

И чтобы удалить элемент, используйте unset:

unset my_array["topic"]

Глубокое погружение

Ассоциативные массивы были введены в Bash версии 4.0 и являются относительно новым дополнением к языку. До их введения работа с массивами, индексы которых не являются целыми числами, была затруднительной и часто требовала обходных путей или использования внешних инструментов, таких как awk или sed.

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

Хотя ассоциативные массивы в Bash приносят много силы и гибкости в написание скриптов, они имеют свой набор ограничений, таких как несколько громоздкая работа по сравнению с массивами в языках более высокого уровня, таких как Python или JavaScript. Для сложных задач манипуляции с данными может оказаться предпочтительным использование внешних инструментов или языков, которые лучше подходят для задачи.

Тем не менее, для многих типичных задач написания скриптов ассоциативные массивы представляют собой ценный инструмент в арсенале программиста Bash, позволяя создавать более читабельные и удобные в обслуживании скрипты за счет использования значимых строковых ключей вместо числовых индексов.