В соответствии со своим названием сценарий командного процессора представляет собой текстовый файл, который указывает командному процессору на выполнение заданной последовательности действий. Сценарий может содержать любую последовательность команд (как внутренних команд командного процессора, так и внешних команд UNIX, с аргументами или без них), вызовов программ или других написанных ранее сценариев. Сценарии могут использовать перенаправления ввода/вывода и конвейер, что позволяет вам писать свои собственные фильтры. Другими словами, сценарий – это сложная командная строка, сохраненная в файле.
Командный процессор Bourne /bin/sh является родоначальником всех командных процессоров UNIX и доступен в во всех системах UNIX–системах. Сценарий, написанный для командного процессора Bourne, будет работать под управлением командного процессора Cи /bin/csh. Сценарии командного процессора Bourne выполняются также под управлением командного процессора Корна /bin/ksh. Существуют также утилиты, которые могут транслировать сценарии из формата одного командного процессора в формат другого.
С примерами сценариев командных процессоров вы уже встречались. Для задания различных параметров и выполнения других задач по настройке используются файлы сценариев .profile и .login.
Сценарии командных процессоров могут запрашивать ввод и выполнять те или иные действия в зависимости от того, что вы набираете на клавиатуре. Аналогично, в командах можно использовать задаваемые пользователем аргументы и выбирать соответствующие шаги сценария в зависимости от результатов таких команд. Этот принцип селективного или условного выполнения, общий для всех языков программирования, называется управлениемвыполнения программы. Некоторые из ваших простых сценариев командных процессоров будут просто выполнять фиксированную последовательность операций, которые работают аналогично макрокоманде редактора, в то время как другие будут предлагать вам различные варианты выбора. С учетом того, что сценарий командного процессора может вызывать другие программы и сценарии, ваши возможности практически неограниченные.
Написанные и отлаженные сценарии командного процессора могут реально уменьшить сложность работы командного процессора, заменяя сложные команды простыми и доступными, которые вы можете задавать по своему выбору. Здесь не нужен этап компиляции: командный процессор сразу интерпретирует ваши сценарии, вы можете создавать их поэтапно, тестируя и отлаживая их по частям.
Пример простейшего сценария
Если система UNIX поддерживает специальную запись (#!), то в начале файла сценария должна находиться следующая строка:
#!/bin/sh
С помощью этой комбинации символов можно сообщить системе UNIX, какой интерпретатор должен выполнять данный сценарий.
Например,
#!/bin/bash
Эта последовательность указывает на программу, которую следует использовать для обработки сценария – командную оболочку bash.
Если система UNIX не может правильно обработать последовательность символов (#!), то первую строку сценария оставляют пустой или указывают пустой оператор (:).
Например,
:
# @(#)dw – вывести дату и пользователей – stas 11/04/12
#
date
who
1. Первое одиночное двоеточие не является обязательным. Это просто общепринятое соглашение, показывающее, что следующий текст является сценарием командного процессора Bourne. Двоеточие интерпретируется командным процессором Bourne как NOP (пустая операция) и, таким образом, игнорируется.
Пустой оператор имеет формат – " : ". Этот оператор ничего не делает, только возвращает значение кода завершения "0".
Командный процессор Си использует первый найденный в сценарии символ. Начальный символ # (символ комментария), сообщает процессору Си, что следующий текст является сценарием командного процессора Си. Любой другой начальный символ, отличный от # указывает командному процессору Си, что нужно выполнить ваш сценарий как сценарий командного процессора Bourne.
2. Следующие две строки представляют собой необязательный комментарий, на что указывает начальный символ #. Командный процессор Bourne игнорирует любое начинающееся с символа # слово и все последующие символы вплоть до символа новой строки. Комментарии можно использовать для аннотирования своих сценариев (указания автора, даты, номера версии и т.д.).
Строка @(#) – это полезный прием, используемый командой what для выделения заголовка и назначения сценария. Команда what сканирует задаваемый в качестве аргумента файл и выводит на экран информацию из любого раздела комментария, содержащего последовательность символов @(#):
$ what dw
dw:
dw – вывести дату и пользователей – stas 11/04/12
$
По этой причине набор символов @(#) часто называют строкой индикации. Команда what будет выводить все помеченные таким образом строки.
3. Третья строка с одиночным символом # просто улучшает читаемость сценария. С равным успехом здесь могла бы восприниматься и пустая строка.