Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС / 5. ОС - Управление процессами - 2

.pdf
Скачиваний:
56
Добавлен:
01.06.2015
Размер:
408.67 Кб
Скачать

41

Шелл как язык программирования

Шелл-скрипты – это выполняемые файлы, т.е. программы, хотя и не двоичные, а текстовые.

Шелл-скрипты работают намного медленнее, чем двоичные программы, но они позволяют быстро создавать новые программы с достаточно сложными функциями, используя в качестве основных операций вызовы других, более простых программ.

Операционные системы. Управление процессами - 2

42

Основные понятия языка shell

Простая команда: имя команды и ее параметры (если есть).

командой может считаться любой исполняемый файл, системный или пользовательский

команда возвращает код завершения:

0 – успешное завершение;

>0 – завершение с ошибкой.

Стандартный ввод (по хэндлу 0) и стандартный вывод (по хэндлу 1):

по умолчанию – консоль (т.е. ввод с клавиатуры и вывод на экран);

большинство команд используют стандартные ввод и вывод, если нет параметра-файла;

возможно перенаправление стандартного ввода (“<“) и вывода (“>”, “>>”) на произвольный файл (или устройство).

Переменные – только текстовые:

можно использовать системные переменные (например, PATH или HOME) или определять переменные в скрипте;

если значение переменной состоит из цифр, то можно получить и использовать значение соответствующего числа;

доступ к значению переменной – знак “$”:

A = B означает «присвоить переменной A текст “B”»;

A = $B означает «присвоить переменной A значение переменной B».

Операционные системы. Управление процессами - 2

43

Основные понятия языка shell

Объединение команд:

список команд, выполняемых последовательно и разделенных знаками:

;” – безусловное выполнение следующей команды;

&&” – следующая команда выполняется, если предыдущая завершилась успешно;

||” – следующая команда выполняется, если предыдущая завершилась с ошибкой.

конвейер команд, разделенных знаком “|”;

команды запускаются параллельно в отдельных процессах;

стандартный вывод каждой команды перенаправляется на стандартный ввод следующей;

Перед запуском конвейера шелл создает необходимое количество каналов.

Канал 1

Канал 2

Канал 3

0 Процесс 1 1

0

Процесс 2 1

0

Процесс 3 1

0 Процесс 4 1

Операционные системы. Управление процессами - 2

44

Основные понятия языка shell

Фоновый запуск команды (знак “&”):

команда выполняется в отдельном процессе;

запустивший ее процесс не ожидает завершения команды.

Управляющие конструкции языка: всё, как у людей (if, case, while, until, for, break и т.п.).

Логические выражения в операторах управления строятся на основе:

кодов завершения команд;

кода завершения команды test, которая позволяет проверить разнообразные условия.

Операционные системы. Управление процессами - 2

45

Некоторые принципы программирования в shell

Скрипт следует писать так, чтобы его потом было легко встраивать в конвейеры и другие конструкции. Для этого:

максимально использовать стандартные ввод и вывод;

делать вывод удобным для дальнейшей обработки (без лишних заголовков и итоговых строк, фиксировать формат строк вывода);

передавать данные через параметры и ключи командной строки, используя ввод с клавиатуры (read) только в крайних случаях;

предусмотреть разумные коды завершения.

Операционные системы. Управление процессами - 2