Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО - Лабораторные работы.doc
Скачиваний:
22
Добавлен:
10.11.2019
Размер:
752.13 Кб
Скачать

Лабораторная работа №15. Одномерные массивы

Цель работы: освоить принципы работы с одномерными массивами.

Необходимые сведения

Использование одномерных массивов в bash имеет особенности:

  • нумерация индексов по умолчанию начинается с 0;

  • нет ограничения на максимальное значение индекса;

  • не требуется, чтобы список индексов был непрерывным;

  • любая переменная оболочки может быть использована как массив.

Массив создается автоматически, если используется синтаксис

name[index]=value,

где index может быть арифметическим выражением, возвращающим целое значение большее или равное 0.

Массив также может быть создан с помощью конструкции вида

name=(value1 value2 … valueN),

где каждая величина value имеет вид [index=]string. Часть index= является необязательной; если она отсутствует, то создается элемент массива с индексом предыдущего элемента плюс один. Например, возможно объявление массива

z=(abc 12 [10]=$LOGNAME 34).

При этом нулевому элементу массива z будет присвоено значение abc, первому — значение 12, десятому — имя текущего пользователя, одиннадцатому — значение 34.

Обращение к элементу массива имеет вид ${name[index]}. Если в качестве index указать символ *, то результатом будет текстовая строка, состоящая из всех значений массива, разделенных первым символом переменной IFS. Указание вида ${#name[index]} позволяет обратиться к длине элемента name[index]. Указание вида ${#name[*]} позволяет обратиться к количеству инициализированных элементов массива.

Для удаления некоторого элемента массива применяется команда unset. Для удаления конкретного элемента можно использовать команду unset name[index], а для удаления всего массива — unset name или unset name[*].

Ход работы

  1. Создайте сценарий myscript_arr, в котором формируются:

  • массив a из 10 элементов, содержащий числа от 0 до 9. Индексы должны начинаться с 30. Массив объявить явно;

  • массив b из 20 элементов, содержащий числа от 10 до 29. Для формирования массива используйте цикл for;

  • массив f, в котором содержатся имена не скрытых файлов и каталогов домашнего каталога;

  • массив d, содержащий только имена подкаталогов домашнего каталога. (Указание. Используйте команду ls –D, выполните подсчет количества пробелов в результате выполнения этой команды, осуществите последующий разбор на отбельные значения при помощи команды cut).

  1. Добавьте в сценарий команды, выполняющие следующее:

  • используя цикл for, выведите на экран массив a, в виде

a[30]=0

a[31]=1

  • используя цикл while, выведите на экран массив b в обратном порядке индексов;

  • используя цикл until, выведите на экран массивы f и d.

  1. Добавьте в сценарий команды для вывода на экран информации о каждом массиве в виде

количество элементов массива: 10

  1. Добавьте в сценарий команды для поиска в массивах f и d индексов элементов с максимальной длиной (или индекс одного из таких элементов).

  2. Добавьте в сценарий команды для удаления каждого второго элемента массива b. Проверьте результат.