Массивы в Bash. Как их назначить и правильно использовать?

массивы в bash. как их назначить и правильно использовать?

Индексируемые массивы

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

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

Для осуществления операций с элементами массива используются фигурные скобки. Например, чтобы сложить значения первого и второго элемента массива digits нужно записать следующее выражение «${digits[0]} + ${digits[1]}». Bash также позволяет создать пустой индексируемый массив с помощью команды declare. Ей необходимо передать ключ -a и идентификатор массива.

declare -a digits              #создание пустого индексируемого массива
digits=()                      #аналогично предыдущему примеру

digits=(120 165)               #инициализация массива с определением элементов
digits=([1000]=120 [2000]=165) #явное указание индексов через квадратные скобки

digits[0]=33                   #создание отдельных элементов с указанием индекса
digits[1]=67

#Пример использования значений элементов
echo "Сумма значений: ${digits[0]} и ${digits[1]} равна $[${digits[0]} + ${digits[1]}]"
Сумма значений: 33 и 67 равна 100

#Получение значений всех элементов через индекс @
echo "Массив содержит: ${digits[@]}"
Массив содержит: 33 67 120 165

Заметка
Обратите внимание на пример, приведенный выше. Числовые индексы массива могут быть заданы автоматически при инициализации через круглые скобки. В таком случае отсчет индексов ведется по порядку от числа «0» до «количество_элементов — 1».

Ассоциативные массивы

Ассоциативными называются массивы, в которых индексы задаются с помощью строковых значений. Создавая массив через круглые скобки, вы можете задать каждому элементу строковой индекс, указав его в квадратных скобках. В общем виде выражение можно записать как «имя_массива=([первый_индекс]=значение, [второй_индекс]=значение)».

В Bash создание пустого ассоциативного массива через declare отличается лишь тем, что необходимо указать ключ -A. Обратите внимание, буква записана в верхнем регистре.

declare -A capitals                             #создание пустого ассоциативного массива

capitals=([russia]='Москва' [britain]='Лондон') #указание индексов при инициализации
capitals[ukraine]='Киев'                        #создание элементов с указанием индекса

#Пример использования значений элементов
echo "Столица России - ${capitals[russia]}"
Столица России - Москва

Последние публикации