Введение

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

Создание нового файла скрипта

Начнем с создания нового файла Shell-скрипта, в котором мы будем прописывать операции с массивами.

  1. Откройте терминал в WebIDE.

  2. Перейдите в каталог проекта:

    cd ~/project
  3. Создайте новый файл с именем arrays.sh, используя команду touch:

    touch arrays.sh
  4. Откройте файл arrays.sh в редакторе WebIDE.

Инициализация пустых массивов

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

Добавьте следующий код в файл arrays.sh:

#!/bin/bash

## Initialize empty arrays
NUMBERS=()
STRINGS=()
NAMES=()

Разберем, что делает этот код:

  • Первая строка #!/bin/bash называется шебанг (shebang). Она указывает системе, что данный скрипт должен выполняться интерпретатором Bash.
  • Мы создаем три пустых массива: NUMBERS, STRINGS и NAMES.
  • Синтаксис () используется для инициализации пустого массива.

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

Теперь, когда у нас есть пустые массивы, давайте наполним их данными.

Добавьте следующий код в файл arrays.sh ниже строк инициализации:

## Add elements to NUMBERS array
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## Add elements to STRINGS array
STRINGS+=("hello")
STRINGS+=("world")

## Add elements to NAMES array
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

Вот как работает этот код:

  • Мы используем оператор += для добавления (дописывания) элементов в конец массива.
  • В массив NUMBERS мы добавляем целые числа 1, 2 и 3.
  • В массив STRINGS мы добавляем слова "hello" и "world".
  • В массив NAMES мы добавляем три имени: "John", "Eric" и "Jessica".
  • Обратите внимание, что строковые элементы заключаются в кавычки, в то время как числам они не требуются.

Определение количества элементов в массиве

Одной из распространенных операций является выяснение количества элементов, содержащихся в массиве. Давайте сделаем это для массива NAMES.

Добавьте следующий код в файл arrays.sh:

## Get the number of elements in the NAMES array
NumberOfNames=${#NAMES[@]}

Эта строка выполняет следующие действия:

  • Конструкция ${#NAMES[@]} возвращает общее количество элементов в массиве NAMES.
  • Мы сохраняем это значение в переменную с именем NumberOfNames.
  • Символ @ внутри скобок указывает на все элементы массива.
  • Символ # перед именем массива NAMES приказывает оболочке (shell) подсчитать количество элементов.

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

Теперь давайте обратимся к конкретному элементу в массиве NAMES. Мы извлечем второе имя.

Добавьте этот код в файл arrays.sh:

## Access the second name in the NAMES array
second_name=${NAMES[1]}

Разбор кода:

  • Мы обращаемся ко второму элементу массива NAMES с помощью ${NAMES[1]}.
  • Помните, что индексация массивов в Bash начинается с 0, поэтому индекс [1] соответствует второму элементу.
  • Мы сохраняем полученное значение в переменную second_name.

Вывод массивов и переменных

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

Добавьте следующий код в конец файла arrays.sh:

## Print the arrays and variables
echo "NUMBERS array: ${NUMBERS[@]}"
echo "STRINGS array: ${STRINGS[@]}"
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is: $second_name"

Этот блок кода делает следующее:

  • Мы используем команду echo для вывода строк в консоль.
  • ${NUMBERS[@]} и ${STRINGS[@]} выводят все элементы соответствующих массивов.
  • Мы выводим значения переменных NumberOfNames и second_name, которые создали ранее.

Запуск скрипта

Теперь, когда скрипт написан, пришло время запустить его и проверить результаты.

  1. В терминале убедитесь, что вы находитесь в нужном каталоге:

    cd ~/project
  2. Сделайте файл скрипта исполняемым:

    chmod +x arrays.sh
  3. Запустите скрипт:

    ./arrays.sh

Вы должны увидеть вывод, похожий на этот:

NUMBERS array: 1 2 3
STRINGS array: hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric

Этот результат подтверждает, что наши операции с массивами прошли успешно:

  • Массив NUMBERS содержит 1, 2 и 3.
  • Массив STRINGS содержит "hello" и "world".
  • Мы правильно насчитали 3 имени в массиве NAMES.
  • Мы успешно извлекли "Eric" как второе имя в списке.

Резюме

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