Сценарии shell
Цели работы
Получить навыки создания и выполнения сценариев на языке shell. Научиться работать с переменными и параметрами командной строки; использовать операторы ветвлений, циклов; выполнять проверку условий с помощью команды test. Освоить следующие команды, определенные стандартом Posix.2 и управляющие конструкции:
read | declare (-i) | test | [ | if | select | while | for |
Описание работы
Внимание! Каждый сценарий необходимо снабдить элегантными, содержательными комментариями, которые не мешают восприятию алгоритма программы. В начале каждого сценария должна быть информация об авторе, назначении и дате создания сценария.
Внимание! Файл сценария необходимо сделать исполняемым.
Шаг 1 (справка).
Используя справочные руководство man
и учебное пособие pdf
изучите общее назначение и синтаксис команд и операторов, перечисленных в разделе "Цели работы".
Шаг 2 (переменные).
2.1 Напишите сценарий read_var.sh, который с помощью команды read
запрашивает значение переменных a и b и выполняет вывод
полученных значений на экран.
2.2 Объясните результат выполнения команды echo $ab
2.3 Используя перенаправление стандартного вывода для read_var.sh
выведите значения перменных a и b в файл vars.txt.
2.4 С помощью declare определите переменную int_var целого типа.
Введите значение переменной с помощью команды read.
Какое значение будет записано в переменную int_var если
ввести: а) целое число; б) строку; в) вещественное число (например 3.14)?
Шаг 3 (параметры командной строки).
3.1 Напишите сценарий print_args.sh, который выводит количество и
список аргументов командной строки с помощью специальных параметров
${#} и ${*}, ${@} соответственно.
Входит ли имя запускаемого скрипта в списки ${*}, ${@}?
Сравните вычисление количества параметров с помощью ${#} и
аналогичного параметра argc фукнции main языка Си (для 1 курса).
3.2 Добавьте в print_args.sh вывод позиционных параметров с именами 0 и 1.
Какой результат будет в случае запуска скрипта без параметров?
Шаг 4 (управляющие конструкции, см. примеры 7.16, 7.18, 7.21 в уч. пос. pdf
).
4.1 Используя оператор if и команду test напишите сценарий root_test.sh, принимающий
в качестве параметра командной строки имя предполагаемого пользователя.
Если параметр не задан, то вывести "Отсутствует имя".
Если параметр введен и совпадает со строкой "root", то вывести "Вы - суперпользователь",
иначе вывести "Вы - обычный пользователь".
4.2 Используя оператор select напишите сценарий poll_menu.sh организующий меню для голосования за
одну из партий:
- ЯГОДА
- КЛМН
- МЕДРО
- ВВЖ
- СССР
- ПДД
Шаг 5 (Сценарий).
Реализуйте один из двух вариантов задания, на выбор:
5.1 Сценарий randrename.sh. Переименовать случайно выбранный файл из каталога, заданного первым параметром, заменив его имя на слово, заданное вторым параметром. Сценарий должен сохранять расширение переименовываемого файла.
5.2 Сценарий ecount.sh. Вывести число вхождений слова, заданного вторым параметром сценария в каждый регулярный файл каталога, заданного первым позиционным параметром. Сценарий должен вывести на экран таблицу в форме <имя> <количество вхождений>.
Критерии оценки работы
За задание можно получить 8 баллов. При этом задание должно быть выполнено полностью, сдаваться в срок, автор обязан понимать собственное решение и уметь объяснить суть основных понятий: процесс, задача, сигнал.
Защищая работу, Вы должны продемонстрировать 1) умение работать со справочной системой (man, whatis, apropos, info); 2) знание общего назначения приведенных в разделе "Цели работы" команд (например, echo — вывод строки текста); 3) умение создавать, запускать сценарии shell; 4) умение ориентироваться в тексте собственных программ.