(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Цели работы

Получить навыки создания и выполнения сценариев на языке 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 организующий меню для голосования за одну из партий:

  1. ЯГОДА
  2. КЛМН
  3. МЕДРО
  4. ВВЖ
  5. СССР
  6. ПДД
4.3 Используя текст примера 7.21 напишите сценарий for_args.sh для вывода в прямом порядке позиционных параметров. Замените оператор while оператором for.

Критерии оценки работы

За задание можно получить 8 баллов. При этом задание должно быть выполнено полностью, сдаваться в срок, автор обязан понимать собственное решение и уметь объяснить суть основных понятий: процесс, задача, сигнал.

Защищая работу, Вы должны продемонстрировать 1) умение работать со справочной системой (man, whatis, apropos, info); 2) знание общего назначения приведенных в разделе "Цели работы" команд (например, echo — вывод строки текста); 3) умение создавать, запускать сценарии shell; 4) умение ориентироваться в тексте собственных программ.