
- •Лабораторная работа № 5 «Программирование в командном процессоре ос unix»
- •5.1 Командные процессоры (оболочки)
- •5.2 Переменные в языке программирования bash
- •Использование арифметических вычислений. Операторы let и read
- •Арифметические операторы оболочки bash
- •5.3 Метасимволы и их экранирование
- •5.4 Командные файлы и функции
- •5.4.1 Передача параметров в командные файлы и специальные переменные
- •5.4.2 Использование команды getopts
- •5.4.3 Управление последовательностью действий в командных файлах
- •5.5 Оператор цикла for
- •5.6 Оператор выбора case
- •5.7 Условный оператор if
- •5.8 Операторы цикла while и until
- •5.9 Прерывание циклов
- •Задание на лабораторную работу
- •Контрольные вопросы
Задание на лабораторную работу
1. Используя команды getopts grep написать командный файл, который анализирует командную строку с ключами:
-iinputfile – прочитать данные из указанного файла
-ooutputfile – вывести данные в указанный файл
-pшаблон – указать шаблон для поиска
-С – различать большие и малые буквы
-n – выдавать номера строк,
а затем ищет в указанном файле нужные строки, определяемые ключом -p.
2. Написать на языке Си программу, которая вводит строку символов и определяет, чем является эта строка – целым числом, вещественным, датой или текстовой строкой. Затем программа завершается с помощью функции exit(n), передавая информацию в о коде завершения в оболочку. Командный файл должен вызывать эту программу и, проанализировав с помощью команды $? код возврата, выдавать сообщение о том какое число было введено.
3. Написать пример командного файла, обрабатывающего более 10 входных аргументов.
4. Написать командный файл – аналог команды ls (без использования самой этой команды). Требуется, что бы он выдавал информацию о нужном каталоге и выводил информацию о возможностях доступа к файлам этого каталога.
5. Написать командный файл, реализующий упрощенный механизм семафоров. Командный файл должен в течение некоторого времени t1 дожидаться освобождения ресурса, выдавая об этом сообщение, а дождавшись его освобождения использовать его в течение некоторого времени t2<>t1, также выдавая информацию о том, что ресурс используется соответствующим командным файлом (процессом). Запустить командный файл в одном виртуальном терминале в фоновом режиме, перенаправив его вывод в другой (>/dev/tty#, где # – номер терминала куда перенаправляется вывод), в котором также запущен этот файл, но не фоновом, а в привилегированном режиме. Доработать программу так, чтобы имелась возможность взаимодействия трех и более процессов.
6. Реализовать команду man с помощью командного файла.
Контрольные вопросы
Объясните понятие командных оболочек
Что такое POSIX?
Как определяются переменные и массивы в языке программирования bash?
Каково назначение операторов let и read?
Какие арифметические операции можно применять в языке программирования bash?
Что означает операция (())?
Какие стандартные имена переменных вы знаете?
Что такое метасимволы?
Как экранировать метасимволы?
Как создать и запускать командные файлы?
Как определяются функции в языке программирования Bash?
Каким образом Вы можете выяснить является файл каталогом или обычным файлом?
Каково назначение команд set, typset и unser?
Как передаются параметры в командные файлы?
Назовите специальные переменные языка bash и их назначение.
Каково предназначение команды getopts?
Какое отношение метасимволы имеют к генерации имен файлов?
Какие операторы управления действиями Вы знаете?
Какие операторы используются для прерывания цикла?
Для чего нужны команды false и true?
Что означает строка if test –f manSs/Si.Ss встреченная в командном файле?