
ОС / 5. ОС - Управление процессами - 2
.pdf
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