- Каждый ключ в массиве может появляться только один раз. Вы можете думать об этом как об уникальном идентификаторе пользователя в списке.
- Значение может появляться в массиве более одного раза. Например, два человека в списке могут иметь одно и то же имя, но должны иметь разные идентификаторы пользователей.
В этой статье мы объясним, как вы можете объявлять и инициализировать ассоциативные массивы в Linux bash. Мы подробнее рассмотрим возможности ассоциативных массивов с помощью различных примеров.
Мы выполнили примеры, упомянутые в этой статье, в системе Debian 10 Buster. Однако вы можете легко выполнить репликацию почти на всех дистрибутивах Linux.
- Проверка предварительных требований
- Объявление ассоциативного массива и его инициализация
- Пример 1: доступ к ключам и значениям массива
- Пример 2: Подсчет элементов массива
- Пример 3: Добавление новых данных в массив
- Пример 4: Удаление элемента из массива
- Пример 5: Проверка, существует ли элемент в массиве
- Пример 6: Удаление массива
Проверка предварительных требований
Для использования ассоциативных массивов в Linux Bash ваша версия GNU Bash должна быть версии 4 или выше. Откройте Терминал Linux, открыв его через поиск в Application Launcher. Затем введите следующую команду, чтобы проверить установленную версию bash:
Моя текущая версия bash — 5.0.3, так что я готов. Если ваша версия bash меньше 4, вы можете обновить bash, выполнив следующую команду как sudo:
Объявление ассоциативного массива и его инициализация
Объявление ассоциативного массива в bash довольно просто и может быть выполнено с помощью команды declare:
В нашем примере мы будем объявлять переменную массива с именем sampleArray1 следующим образом:
Следующим шагом является инициализация необходимых значений для вашего массива. В нашем примере мы хотим иметь массив, в котором значениями являются названия нескольких стран, а ключами — соответствующие сокращения названий стран. Здесь мы будем передавать значения массива, одно за другим, следующим образом:
Пример :
$ sampleArray1 [JPN] = Япония
$ sampleArray1 [KOR] = Корея
$ sampleArray1 [TWN] = Тайвань
$ sampleArray1 [TH] = Таиланд
Быстрая альтернатива — объявить и инициализировать массив с помощью одной команды bash следующим образом:
Вот как мы можем объявить и инициализировать наш упомянутый массив, альтернативно, следующим образом:
[TH] = Таиланд)
Теперь мы представим несколько примеров, которые подробно расскажут, что вы можете делать с ассоциативными массивами в bash:
Пример 1: доступ к ключам и значениям массива
В этом примере мы объясним, как вы можете:
- Распечатать значение против ключа
- Распечатать сразу все ключи массива
- Печатать сразу все значения массива
И,
- Распечатать сразу все пары «ключ-значение»
Печать
Вы можете напечатайте значение для ключа , используя следующий синтаксис команды:
Вот как мы можем получить доступ к полному названию страны, указав аббревиатуру названия страны из нашего sampleArr ay1:
$ echo $ {sampleArray1 [TWN]}
Если вас интересует печать всех ключей ваш ассоциативный массив, вы можете сделать это, используя следующий синтаксис:
Следующая команда распечатает все сокращения названий стран из моего sampleArray1
с использованием цикла for:
Еще одна альтернатива печати всех ключей из массива с помощью расширения параметров. Следующая команда напечатает все ключи в одной строке:
Если вас интересует печать всех значений массива сразу , это можно сделать с помощью цикла for следующим образом:
Следующая команда напечатает все полные названия стран, хранящиеся в моем sampleArray1:
Еще одна альтернатива печати всех значений из массива с помощью расширения параметров. Следующая команда напечатает все значения в одной строке:
Следующий полезный пример будет распечатать все пары ключ-значение сразу, используя цикл for следующим образом:
$ {sampleArray1 [$ key]}»; готово
Конечно, вы можете сделать получение этой информации более полезным в ваших сложных и содержательных сценариях bash.
Пример 2: Подсчет элементов массива
Для подсчета и печати количества элементов в ассоциативном массиве можно использовать следующую команду:
Вывод следующей команды показывает, что у меня есть пять элементов в моем sampleArray1:
Пример 3: Добавление новых данных в массив
Если вы хотите добавить элемент в массив после того, как вы уже объявили и инициализировали его, вы можете следовать следующему синтаксису:
В моем примере я хочу добавить другую страну вместе с сокращением названия округа, поэтому я буду использовать следующую команду:
Отображение значений массива теперь предполагает, что n Новая страна добавлена в мой массив:
Пример 4: Удаление элемента из массива
Удаление записи из ассоциативного массива , вы можете удалить его как элемент массива. Для этого можно использовать нестандартный синтаксис:
В моем примере , Я хочу удалить пару ключ-значение «AL-Alabama» из своего массива, поэтому я отключу ключ «AL» в своей команде:
Отображение значений массива теперь предполагает, что ключ-значение AL-Alabama теперь удалено из моего массива:
Пример 5: Проверка, существует ли элемент в массиве
Используя условие if следующим образом, вы можете проверить, доступен ли элемент в вашем ассоциативном массиве или сейчас:
Например, если я проверю, существует ли в моем массиве недавно удаленный элемент AL-Alabama, будет напечатано следующее сообщение:
Если я проверяю элемент если существует, будет напечатан следующий результат:
Пример 6: Удаление массива
Вы можете удалить ассоциативный массив из своей памяти bash с помощью следующей команды unset:
Используя следующую простую команду, я удалю свой sampleArray1 из памяти:
Теперь, когда я пытаюсь распечатать все значения массива с помощью следующей команды, я ничего не получаю.
Используя эти примеры в ваших сценариях Linux bash, вы можете использовать возможности ассоциативных массивов для решения многих сложных проблем.