Лекция: Селекторы
Оператор case предоставляет удобную форму для множественного выбора:
case слово in
шаблон1)
command
.. .
;;
шаблон2)
command
.. .
;;
.. .
*)
command
.. .
;;
Значение слова сравнивается с шаблонами, начиная с первого. Если совпадение найдено, то выполняются команды соответствующего раздела. Шаблоны допускают наличие масок. Последний раздел с шаблоном *) аналогичен разделу default в синтаксисе оператора switct языка Си.
Ввод
Присвоение значений переменных может осуществляться явно или с помощью некоторой программы. Команда read предоставляет возможность присвоить переменным значения, которые считываются из стандартного потока ввода. Это может быть строка, введенная пользователем или считанная из файла в случае перенаправления потока. Если число слов в строке превышает число переменных, то в последней переменной будут сохранены все оставшиеся слова.
Пример:
| Текст скрипта: #!/bin/bash echo «input: » while read var1 var2 var3 do echo var1=$var1 echo var2=$var2 echo var3=$var3 echo «input: » done | Запуск скрипта: input: пример работы команды read var1=пример var2=работы var3=команды read input: еще пример var1=еще var2=пример var3= input: ^D |
Варианты заданий
Для демонстрации работы скриптов, позаботьтесь о создании в рабочем каталоге необходимых демонстрационных каталогов и файлов; ххх – первые буквы фамилии автора; каждый скрипт начинается с выдачи заголовка с информацией об авторе; каждый скрипт предусматривает ввод аргументов, как с помощью параметров, так и с клавиатуры в случае отсутствия параметров; если параметр некорректный – выдать сообщение и выйти с кодом ошибки; код ошибки – последние 2 цифры зачетки.
1. Напишите скрипт, который выводит список файлов, находящихся в текущем каталоге, в строку, а затем в столбик.
2. Напишите скрипт, который ищет в каталоге имена файлов, которые оканчиваются на.ххх и выводит результаты в файл ххххх.list, а затем на терминал.
3. Напишите скрипт, который в каталоге находит из всех файлов строчки, содержащие слово ххх. (2 параметра – имя каталога и ххх)
4. Напишите скрипт, который проверяет первый аргумент, и если он является обычным файлом, выводит сначала первые 5 строк, затем последние 5 строк.
5. Не используя команду ls, напишите скрипт, который выводит список файлов, расположенных в текущем каталоге. Используйте оператор for.
6. Напишите скрипт, который выводит список аргументов, с которыми он был запущен. Если имя аргумент совпадает с именем файла или подкаталога из текущего каталога – выдать это имя сообщение, иначе – записать его в файл ххх.lst.
Контрольные вопросы
1. Что собой представляет shell-программа?
2. Что собой представляет shell-команда?
3. Что собой представляет shell-язык?
4. Дайте определение командного файла.
5. Какие свойства оболочки показались Вам наиболее полезными и почему?
6. Объясните, в чем разница между циклами:
| for i in * | for i in $* |
Содержание отчета
1. Тексты скриптов, согласно варианта.
2. Результаты работы скриптов.
3. Ответы на контрольные вопросы.
4. Выводы.