Ассоциативный массив — структура данных, в которой элементы хранятся в виде пары «ключ-значение». В отличие от обычного массива, где доступ к элементам осуществляется по индексу, ассоциативные массивы позволяют обращаться к данным по связанным с ними ключам.
В этой статье мы покажем Вам базовые примеры использования ассоциативных массивов в Bash Linux.
Содержание:
- Требования
- Объявление ассоциативного массива и добавление элементов в него
- Отображение ключей и значений в терминале
- Определение длины ассоциативного массива
- Получение доступа к значениям и их добавление в массив
- Перебор элементов ассоциативного массива с помощью цикла for
- Проверка наличия ключа в массиве
- Удаление элементов ассоциативного массива
- Выводы
Требования
Функционал ассоциативных массивов появился в Bash версии 4 в Вашей ОС. Чтобы узнать версию Bash, выполните в терминале команду:
Чтобы обновить Bash в Вашем дистрибутиве Linux, используйте одну из следующих команд.
Для Debian / Ubuntu:
Для CentOS / Redhat / Fedora Linux:
Объявление ассоциативного массива и добавление элементов в него
Чтобы создать / объявить ассоциативный массив в Bash, используется команда declare с опцией -A и названием массива. Например:
Для заполнения массива данными в виде «ключ-значение» применяется команда:
К примеру, заполним наш массив тремя парами «ключ-значение»:
Читайте также: 10 полезных советов для написания эффективных bash скриптов в Linux.
Вы также можете заполнить ассоциативный массив во время его объявления. Для этого используется такая конструкция:
Также, как и в различных языках программирования, Вы можете создать ассоциативный массив в режиме «только для чтения». Чтобы это сделать, добавьте в команду объявления массива опцию -r:
На скриншоте выше видно, что при попытке записи новых данных в массив появляется сообщение readonly variable.
Отображение ключей и значений в терминале
Для вывода значений ассоциативного массива можно использовать команду echo. В качестве ее аргумента следует передать такую конструкцию — ${<array-name>[@]}. Например:
Символ @ обращается ко всем элементам массива и выводит только значения.
Чтобы просмотреть список ключей ассоциативного массива, к аргументу предыдущей команды добавьте восклицательный знак (!) перед названием массива:
Важно: ключи и значения выводятся в произвольном порядке, а не в том, в котором они были объявлены.
Определение длины ассоциативного массива
Чтобы вывести на экран длину массива, выполните в терминале следующую команду:
Читайте также: Изучение базового написания скриптов оболочки (Shell Scripting) и файловой системы Linux, устранение неполадок — LFCS часть 10.
Получение доступа к значениям и их добавление в массив
Вы можете обратиться к какому-то определенному значению массива по его ключу. Например, чтобы вывести на экран конкретное значение, используйте следующую команду:
Где <key> — ключ нужного значения. Например:
Чтобы добавить новые элементы в существующий ассоциативный массив, используйте ту же команду, что и для его заполнения. Например:
Вы также можете применить следующую команду для добавления новой пары «ключ-значение» в массив:
Перебор элементов ассоциативного массива с помощью цикла for
Ассоциативные массивы очень часто используются в скриптах. Вы можете обрабатывать элементы этих массивов с помощью цикла for. Для примера напишем код, который выведет на экран все ключи и их значения:
Читайте также: Как использовать цикл for в Linux.
Проверка наличия ключа в массиве
Одной из самых популярных задач в программировании является проверка элемента на наличие в массиве. Для ее решения можно использовать оператор if. Например:
Читайте также: Использование операторов if, elif, else в скриптах Bash.
Удаление элементов ассоциативного массива
Вы можете удалить пару «ключ-значение» из массива с помощью команды unset. Для этого в качестве ее аргумента следует указать ключ из нужной пары:
Чтобы удалить ассоциативный массив, передайте его название в качестве аргумента к команде unset:
Выводы
Ассоциативные массивы позволяют структурировать данные и обрабатывать их. Мы показали Вам, как создавать такие массивы, заполнять их данными и проводить различные операции с их элементами.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.





































