Что такое Bash Словари на Linux, и как вы их используете?

Jun 16, 2025
Linux,
Fatmawati Achmad Zaenuri / ShuttTerstick.com

Словари Bash дают вам хеш-карты и ассоциативные массивы в сценариях Linux Shell. Мы покажем вам, как использовать эти мощные и полезные структуры данных в ваших собственных сценариях оболочки Linux.

Роза любым другим именем

Формальное название словарей - ассоциативные массивы. Они также называют хэш-столами и хеш-карты. Это структура данных, которая функционирует аналогично регулярному массиву, но с существенной разницей.

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

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

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

Вы можете посмотреть значение в ассоциативном массиве, поисчавшись с его ключевым словом. Глядя вверх по словам и получение их связанного значения, имитирует, имитирует слово в словаре и нахождение его значения. Вот почему ассоциативные массивы известны как словари.

Bash 4.0 или выше

Ассоциативные массивы поддерживаются в Bash Shell. Версия 4.0 или выше. Если вы используете текущее распределение Linux, вы должны быть в порядке. Чтобы проверить вашу версию Bash, используйте эту команду:

 Bash --version 

Машина, используемая для исследования этой статьи, установлена ​​Bash 5.1.4, поэтому мы приятно идти.

Основные принципы

Чтобы создать ассоциативный массив на командной строке терминала или в скрипте, мы используем команду Bash Declare. То - (Associative) Опция говорит Bash, что это будет ассоциативный массив, а не индексированный массив.

 Объявить - аббревиатуры 

Это создает ассоциативный массив под названием «аббревиатура».

Чтобы ввести некоторые данные в наш массив, нам нужно предоставить ключевые слова и значения. Мы можем сделать это, используя этот формат:

 Название массива [КЛЮЧ] = значение 

Давайте добавим некоторые элементы массива:

 Акроними [ACK] = подтверждение 
 Сокращения [BGP] = «Протокол границы шлюза» 
 Акронимю [CIDR] = «Безкоммертный междоместный маршрут» 
 Акронимю [DHCP] = "Динамический протокол конфигурации хоста" 
 Сокращение [EOF] = «конец кадра» 

Эти команды определяют пять элементов массива. Обратите внимание, что значения обернуты в кавычки, если в стоимости есть пробелы. Наши ключевые слова были введены в алфавитном порядке, но их можно ввести в любом порядке. Ключевые слова должны быть уникальными. Если вы попытаетесь создать два записей с тем же ключевым тем же ключевымнем углом, второе значение, которое вы вводите, перезаписывают первый. У вас все еще есть только одна запись с этим ключевым словом, и он будет связан со вторым добавленным вами значением.

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

 $ {Array-name [Key]} 

Мы можем использовать echo для отправки вывода в окно терминала:

 Эхо $ {аббревиатуры [ACK]} 
 Эхо $ {аббревиатуры [DHCP]} 

Использование петлей

Массивы одали себя очень хорошо использоваться в петлях. Ассоциативные массивы не являются исключением. Петли обеспечивают эффективные способы вызывать последовательность действий без повторяющихся секций кода. Прежде чем мы посмотрим на петли, есть эффективный способ объявить массивы.

Мы создаем массивы, используя объявлять команда (то же самое - Вариант как раньше), но мы предоставляем ключевые слова и значения в виде списка в командной строке.

 Объявить - страны стран = ([ALB] = Albania [BHR] = Бахрейн [CMR] = Cameroon [DNK] = Дания [EGY] = Египет) 

Название массива - «страны», и он подключен к списку стоимости на равных знаках « знак равно " Список стоимости завернут в скобки » () «И каждое ключевое слово завернуто в скобках» [] ". Обратите внимание, что нет запятых, отделяющих значения. Если у вас есть строка значений, которая содержит пробелы, вам нужно будет обернуть его в кавычках.

Чтобы сделать ассоциативный массив вернуть ключевое слово вместо значения, добавьте восклицательный знак » Действительно «Перед именем массива. На символ " @ «Может использоваться в качестве подстановочного знака, что означает все элементы массива.

Этот для Цикл перечисляет все ключевые слова:

 Для ключа в «$ {! Страны [@]}»; Do Echo $ ключ; сделано 

Обратите внимание, что ключевые слова не обязательно перечислены в том, чтобы они были созданы, но это не имеет значения. Ассоциативные массивы не полагаются на упорядоченный индекс.

Мы также можем использовать расширение параметра для перечисления всех ключевых слов. Они будут перечислены на одной строке, а не на одну строку.

 Эхо «$ {! Страны [@]}» 
 Эхо «$ {! Acronyms [@]}» 

Мы можем увеличить наш для цикл для печати ключевых слов и значений одновременно.

 Для ключа в «$ {! Acronyms [@]}»; DO ECHO "$ KEY - $ {aCronys [$ ключ]}"; сделано 

Если мы хотим знать, сколько элементов есть в массивах, мы можем использовать хеш «#» перед именем массива вместо восклицательной точки.

 Эхо «$ {! Страны [@]}» 
 Эхо «$ {! Acronyms [@]}» 

Проверка того, что элемент массива существует

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

Мы можем проверить наличие элемента массива, используя + _ «Оператор. Обратите внимание, что это заходит после ключевого слова, а не перед именем массива, такими как предыдущие операторы, которые мы видели.

 Если [$ {аббревиатуры [EOF] + _}]; Тогда эхо «найден»; еще эхо "не найден"; Fi 
 Если [$ {аббревиатуры [FTP] + _}]; Тогда эхо «найден»; еще эхо "не найден"; Fi 

Элемент массива с ключевым словом «EOF» находится в массиве, но элемент массива с ключевым словом «FTP» нет.

Добавление элементов массива

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

Чтобы добавить новый элемент в массив, мы используем « + = «Оператор.

 Страны + = ([FJI] = Фиджи) 
 Echo "$ (# страны [@]}" 
 ECHO $ ​​{страны [FJI]} 

Количество элементов в массиве сейчас шесть, а поиск нового ключевого слова находит элемент массива и возвращает его значение.

Удаление элементов и массивов массива

То несомненно Команда используется для удаления элементов массива. Если ключевому слову в нем пробелы, оберните его в кавычки.

 unset Acronys [eof] 
 Если [$ {аббревиатуры [EOF] + _}]; Тогда эхо «найден»; еще эхо "не найден"; Fi 

Чтобы удалить весь массив, используйте несомненно с названием массива.

 Свободные страны 

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

Использование переменных с ассоциативными массивами просты. В этом примере мы установим ключ переменной в строку «EOF». Мы будем использовать переменную, когда мы добавляем новый элемент массива в массив. На самом деле, мы заменяем элемент массива, который мы удалили ранее.

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

 Ключ = EOF 
 аббревиатуры [$ KEY] = «Конец кадров» 
 ECHO $ ​​{аббревиатуры [EOF]} 
 ECHO $ ​​{аббревиатуры [$ KEY]} 

Получить творчество

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

 Объявить - спецификация 
 Спецификация [CPU] = «Двойное ядро ​​AMD Ryzen 5 3600» 
 Спецификация [скорость] = "3600 МГц" 
 Спецификация [kernel] = "5.11.0-17-Generic x86_64" 
 Спецификация [mem] = "1978,5 mib" 
 Спецификация [Хранение] = "32 Гиб" 
 Спецификация [Shell] = «Bash» 
 ECHO $ ​​{Спецификация [CPU]} 

Эффективно написание на языке означает звание механизмов и структур, которые он предлагает, и выбирая наиболее подходящую для проблемы, которую вы пытаетесь решить. Ассоциативные массивы дают вам простое в использовании способа хранения данных, которые вы можете искать по имени, как и словарь.


Linux, - Самые популярные статьи

Как восстановить удаленные файлы на Linux с TESTDISK

Linux, Nov 18, 2024

Fatmawati Achmad Zaenuri / Shutterstock Вы когда-нибудь удалили файл и мгновенно сожалели об этом? Вам ну�..


Как использовать Браузер БД для SQLite на Linux

Linux, Dec 16, 2024

Fatmawati Achmad Zaenuri / Shutterstock Браузер БД для SQLite Позволяет просматривать и редактировать ..


Как обработать файловую строку по строке в сценарии Binux Bash

Linux, Feb 3, 2025

Fatmawati Achmad Zaenuri / Shutterstock Довольно легко прочитать содержимое линейки текстового файла Li..


Как выбирать между Ubuntu, Kubuntu, Xubuntu и Lubuntu

Linux, Mar 19, 2025

Tomeqs / ShuttTerstock.com. Есть более одного Ubuntu. Вы можете скачать Ubuntu, Kubuntu, xubuntu или lubuntu: Но в чем �..


Что нового в Gnome 40?

Linux, Jul 23, 2025

Фонд Гном Gnome 40 имеет более чем новую схему нумерации. Наряду с новым взглядом приходи�..


Что нового в Ubuntu 21.10 'Impish Indri'

Linux, Oct 14, 2025

Канонический Ubuntu 21.10 "Согласил indri" было выпущенный 14 октября 2021 года. Это особенно�..


Как установить Linux на M1 Mac с Apple Silicon

Linux, Nov 11, 2024

Новая поддержка Linux для новой архитектуры на основе Apple еще не готова, но вы можете запустить Linux на M1..


Как интегрировать приложения и сценарии на рабочий стол Linux

Linux, Oct 10, 2025

На Linux приложение без настольного файла не будет интегрироваться с вашей средой рабочего стола. Большинс�..


Категории