Процедура Shell может быть создана за два простых шага. Первый шаг - это создание обычного текстового файла. Второй - это изменение типа файла для того, чтобы он стал выполняемым и его можно было вызвать с помощью:
proc args
а не
sh proc args
Второй шаг можно не делать для процедуры, которую вы собираетесь использовать один или два раза, но для более часто используемых мы рекомендуем это делать. В качестве примера, создайте файл с именем mailall со следующим содержимым:
LETTER=$1
shift
for i in $*
do mail $i < $LETTER
done
Затем введите:
chmod +x mailall
Созданную новую команду можно теперь запускать из текущего каталога введя, например:
mailall letter joe bob
Здесь letter это имя файла, содержащего сообщение, которое вы хотите разослать, а joe и bob - это адресаты.
Если mailall создан таким способом в каталоге, указанном в переменной PATH, то пользователь может менять каталоги и вызывать mailall таким же способом.
Процедуры Shell часто используются пользователями, работающими в csh. Однако, если первым символом процедуры является # (символ комментария), то csh полагает, что данная процедура является процедурой csh и вызывает для ее выполнения /bin/csh. Всегда начинайте процедуры Shell с какого-либо другого символа, если предполагается, что ею будут пользоваться и пользователи, работающие в csh. В этом случае для ее выполнения будет вызываться стандартный интерпретатор Shell /bin/sh.
Процедуры Shell могут создаваться динамически. Процедура может генерировать файл с командами, вызывать другой интерпретатор для выполнения этого файла и затем удалять его. Альтернативный подход - это применение команды (.), чтобы заставить текущий интерпретатор прочитать команды из нового файла, использовать значения существующих переменных Shell, не создавая дополнительного процесса в подоболочке.
Многие пользователи предпочитают писать процедуры Shell, а не программы на Си или другом традиционном языке программирования. У этого есть свои причины:
1. Процедуру Shell легко создавать и работать с ней, т.к. это обычный текстовый файл.
2. У процедуры Shell нет соответствующего об'ектного кода, который требовалось бы создавать.
3. Процедуру Shell можно быстро создать, использовать несколько раз и удалить.
4. Поскольку процедуры Shell короткие, написаны на языке высокого уровня и содержат только исходный текст, их очень легко понимать и при необходимости исправлять.
По принятому соглашению, каталоги, которые содержат только команды и процедуры Shell, называются bin. Это имя является сокращением от binary (двоичный) и используется потому, что часто скомпилированные и выполняемые программы называют binaries, чтобы отличать их от исходных текстов программ. Большинство групп пользователей имеют свои собственные bin-каталоги для хранения общих процедур. Некоторые пользователи указывают в переменной PATH несколько таких каталогов. Мы не советуем указывать много каталогов в переменной PATH, т.к. от этого может пострадать эффективность выполнения процедур.