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

Лабораторная работа №13. Условные конструкции

Цель работы: освоить использование операторов case и if.

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

Оператор case служит для выбора одного из нескольких вариантов:

case значение in

шаблон1)

команды1

;;

шаблон2)

команды2

;;

шаблонN)

командыN

;;

*)

команды_по_умолчанию

;;

esac

Принцип действия: среди всех шаблонов ищется первый, совпадающий со значением. Если он найден, то выполняется соответствующий ему список команд, завершенный двумя символами ;. Шаблон и список разделяются символом ). Одному списку команд может соответствовать несколько шаблонов, тогда они разделяются символом |.

Порядок сравнения шаблонов со значением не определен. Первое совпадение прекращает дальнейшее сравнение и приводит к выполнению соответствующего списка команд и выходу из структуры case. Часть *) является необязательной.

Для проверки файлов, сравнения строк и числовых значений используется команда test. Результатом команды является код завершения: 0 — соответствует значению TRUE, 1 — значению FALSE, 2 — значение ERROR. Команда test без аргументов возвращает значение FALSE.

Для проверки файлов используется синтаксис

test опции файл.

Для файла осуществляется проверка условий в соответствии с указанными опциями:

-e — файл существует;

-s — файл существует и имеет размер больше 0;

-r — возможно чтение файла;

-w — возможна запись в файл;

-x — возможно выполнение файла;

-z — файл имеет нулевую длину;

-f — обычный файл;

-d — каталог;

-c — байт-ориентированный файл;

-b — бит-ориентированный файл;

-h — символическая ссылка.

Для сравнения чисел используется синтаксис

test аргумент1 операция аргумент2.

Аргументами служат положительные или отрицательные целые числа, а также выражения типа -l строка, значением которых будет длина строки. В качестве операции сравнения могут выступать:

-eq — равно;

-ne — не равно;

-gt — больше;

-lt — меньше;

-ge — больше или равно;

-le — меньше или равно.

Для сравнения строк используется синтаксис

test выражение,

где выражение имеет вид

-z строка — истинно, если строка нулевой длины;

-n строка — истинно, если строка ненулевой длины;

строка1 = строка2 — истинно, если строки совпадают;

строка1 != строка2 — истинно, если строки не совпадают.

В команде test можно использовать составные условия с помощью логических операций: -a — конъюнкция, -o — дизъюнкция, ! — отрицание.

Пример: test –r info.txt –a –x info.txt.

Вместо команды test можно использовать конструкцию вида

[ выражение ].

Квадратные скобки должны быть отделены от выражения разделителями (пробелами). Пример: [ –r info.txt –a –x info.txt ].

Для выполнения команд в зависимости от истинности некоторого условия используется оператор if. Синтаксис:

if условие1

then

команды1

elif условие2

then

команды2

else

команды3

fi

Если код возврата условия1 равен 0, то выполняются команды1, иначе проверяется код возврата условия2. Если этот код равен 0, то выполняются команды2. Если условие1, условие2 и все последующие условия веток elif имеют коды возврата не равные 0, то выполняются команды3. В качестве условий обычно используется команда test.

Ключевые слова elif и else использовать необязательно. Если оператор не содержит elif, можно не указывать и else. Ключевых слов elif может быть несколько.

Ход работы

  1. Создайте сценарий myscript9, запрашивающий у пользователя имя файла и число от 1 до 4 и выполняющий в зависимости от введенного значения следующие действия:

  • переименование файла добавлением к имени части _tmp;

  • удаление файла;

  • вывод полной информации о файле;

  • определение типа файла.

  1. В случае, если было введено число отличное от 1,2,3,4 вывести соответствующее сообщение.

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

  3. Измените предыдущий сценарий, добавив запрет на выполнение второго пункта, если файл является каталогом. При этом должно появляться соответствующее сообщение.

  4. Создайте сценарий myscript10, которому в качестве аргументов передаются три числа. В сценарии определяется максимальное из чисел.

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