Командный процессор и выполнение процессов и процедур
Исторически в Unix развивалась несколько командных процессоров: C Sheel (c), B Shell (b), Korn Shell (ksh).
Они имеют незначительные отличия, но выполняют одинаковый функционал:
Ввод командной строки
Разбор командной строки и ее операндов
Выполнение параметрических и командных подстановок
Выполнение команд
В любой команде помимо обычных текстовых данных могут использоваться переменные. Чтобы вместо имени переменной подставить ее значение используется параметрическая подстановка. Для этого перед именем переменной ставиться ‘$’.
Существует также командная подстановка, которая используется для подстановки вместо команды результата выполнения. Записывается с помощью обратных апострофов ``.
Все перечисленные командные процессоры могут запускать на выполнение не только двоичные программы, но и процедуры (скрипты). Скрипт – последовательность команд, записанных в текстовом файле. При выполнении скрипта командный процессор считывает и выполняет команды друг за другом, будто они были введены с клавиатуры.
Возможны следующие схемы выполнения программ и скиптов командными процессорами:
Выполнение двоичной программы
Для запуска двоичной программы Shell по fork создает свою копию SubShell.
Для SubShell копируется среда основного Shell и SubShell по exec (т.е. сам на себя) запускает двоичные программы. Все изменения произведенные программой на исходную среду не повлияют.
Выполнение скрипта может производиться двумя способами:
Перенести переменные из вторичной среды в основную можно с помощью команды Export.
Первичный Shell сам выполняет скрипт в своей собственной среде.
По умолчанию используется вариант а, для использования б нужно перед вызовом скрипта указать ‘. имя_скрипта’.
Все командные процессоры предоставляют возможности переадресации ввода\вывод и создания конвейеров:
cmd1 ! cmd2 ! cmd3 – команды будут выполняться последовательно слева направо, результаты выполнения предыдущего будут для следующего являться исходными.
cmd1 && cmd2 – при такой записи вторая команда будет выполняться, если первая завершилась без ошибок.
cmd1 || cmd2 – вторая выполниться, если первая завершиться с ошибкой.
(cmd1, cmd2, cmd3) > out.txt – команды выполняться последовательно слева направо, независимо друг от друга, а результаты записываются в файл.
{cmd1, cmd2, cmd3} > out.txt – аналогично предыдущему, но с использованием первичного командного процессора.
Дата добавления: 2020-10-01; просмотров: 235;