Командный процессор и выполнение процессов и процедур

 

    Исторически в 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 – аналогично предыдущему, но с использованием первичного командного процессора.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: