Массивы в скриптах оболочки

0 Акции
0
0
0
0

Введение

Умение работать с массивами в скриптах оболочки поможет вам эффективно работать с большими наборами данных. Но что такое массивы и как их создать? Давайте разберёмся.

Что такое массивы?

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

Переменные хранят отдельные элементы данных. Массивы же, напротив, могут хранить практически неограниченное количество элементов данных. При работе с большими объёмами данных переменные могут быть очень неэффективны, поэтому использование массивов может быть очень полезным.

Давайте научимся создавать массивы в скриптах оболочки.

Создание массивов в скриптах оболочки

Есть два типа массивов, с которыми мы можем работать в скриптах оболочки.

  • Индексированные массивы – хранят элементы с индексом, начинающимся с 0.
  • Ассоциативные массивы — хранят элементы в парах ключ-значение

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

Объявление массивов:

root@ubuntu:~# declare -A assoc_array
root@ubuntu:~# assoc_array[key]=value
OR
root@ubuntu:~# declare -a indexed_array
root@ubuntu:~# indexed_array[0]=value

Обратите внимание на заглавную и строчную букву «a». Заглавная буква «A» используется для объявления ассоциативного массива, а строчная — для объявления индексированного массива.

Ключевое слово describe используется для явного объявления массивов, но на самом деле его использование не является обязательным. При создании массива вы можете просто инициализировать значения в соответствии с нужным типом массива, не объявляя массивы явно.

Работа с массивами в скриптах оболочки

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

1. Доступ к элементам массива по отдельности

Поскольку мы знаем, что каждая точка данных индексируется индивидуально, мы можем получить доступ ко всем элементам массива, указав индекс массива, как показано ниже:

assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}

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

index_array=(1 2 3 4 5 6)
echo ${index_array[0]}

Как видите, первый элемент автоматически печатается под индексом 0.

2. Последовательное чтение элементов массива

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

#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
done

Приведенный выше скрипт будет иметь следующий вывод:

Возможно, вы заметили index_array[@], и если вам интересно, для чего нужен символ @, мы рассмотрим это прямо сейчас.

Встроенные операции для массивов в скриптах оболочки

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

1. Доступ ко всем элементам массива

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

Как вы заметили в примере выше, я использовал этот символ, когда хотел перебрать все элементы массива с помощью цикла for.

echo ${assoc_array[@]}

Приведенный выше код выводит все элементы, хранящиеся в массиве assoc.

2. Подсчитать количество элементов в массиве

Подобно символу @, указанному выше, у нас есть символ #, который можно добавить к имени массива, чтобы получить количество элементов, хранящихся в нём. Давайте посмотрим, как это работает.

echo ${#index_array[@]}

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

3. Удалить отдельные элементы массива

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

unset index_array[1]

Замените имя массива и идентификатор индекса в примере кода выше, и вы удалите нужный элемент массива. Довольно просто, правда?

Результат

Скрипты оболочки очень обширны и могут заменить любую функцию, выполняемую в терминале, на функцию, написанную соответствующим человеком. Среди дополнительных возможностей массивов в скриптах оболочки — работа с регулярными выражениями (regex). Мы можем использовать различные регулярные выражения для управления элементами массивов в скриптах оболочки.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться