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

Лабораторная работа №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. Если количество аргументов больше трех, то продолжить выполнение сценария, но вывести уведомляющее сообщение, что количество аргументов превышает три.