Сценарии shell
прим. переводчика: применительно к программам этого типа в
англоязычной литературе последнее время преимущественно
используют слово script - "сценарий", хотя то, что под этим
имеется в виду во многих книгах на русском называется
"традиционно" как "программа на shell" или "командный файл"
Предположим, что вы часто используете серию команд и хотели
бы сократить объем постоянной печати за счет группировки их в
одну команду. Например, команды
/home/larry# cat chapter1 chapter2 chapter3 > book
/home/larry# wc -l book
/home/larry# lp book
об'единяют файлы, содержащие главы книги: chapter1,
chapter2, chapter3 и помещают результат в файл book.
Затем
подсчитывается число строк в книге (в файле book) и отображается
на дисплее и, наконец, печатается командой lp.
Вместо введения каждый раз этих команд, вы можете собрать их
в один сценарий (командный файл). Сценарии shell мы кратко опишем в
Разделе 3.13.1. А сценарий, который выполнит вышеприведенные
команды, будет выглядеть следующим образом
#!/bin/sh
# A shell script to create and print the book
cat chapter1 chapter2 chapter3 > book
wc -l book
lp book
Если этот сценарий будет помещен в файл makebook, то вы
можете просто использовать далее команду
/home/larry# makebook
которая выполнит все команды сценария. Сценарии shell - это
обычные текстовые файлы, которые вы можете создавать с помощью
редактора вроде emacs или vi. (vi обсуждался в Разделе 3.12)
Давайте посмотрим на этот сценарий. Первая строка
``#!bin/sh/'' говорит о том, что этот файл есть сценарий и
сообщает shell, как выполнить сценарий. В данном случае
необходимо передать сценарий для выполнения команде bin/sh/, где
bin/sh/ - сама программа shell. Почему это важно? В большинстве
систем UNIX bin/sh/ - это shell Баурновского типа, например bash.
Инициируя работу сценария shell выполняется, используя bin/sh/,
при этом мы гарантируем, что сценарий будет выполняться именно
под shell Баурновского типа (а не, скажем, под C shell). Этот
сценарий будет выполняться под shell Баурна, даже если вы
используете Tcsh (или какой-то другой C shell) как свою рабочую
оболочку.
Вторая строка представляет из себя комментарий. Комментарии
начинаются символом ``#'' и могут продолжаться до конца строки -
они игнорируются shell и могут использоваться программистом для
пояснений.
Остальные строки сценария - обычные команды в том виде, в
каком бы вы их вводили прямо на выполнение. Shell читает каждую
строку сценария и выполняет эту строку, как будто вы ввели эту
строку в ответ на подсказку shell.
Права доступа важны для сценариев. Если вы создали сценарий,
вы должны убедиться, что вы имеете права на его выполнение.
Если
вы создавали сценарий в редакторе, то он (обычно) не получает
автоматически прав на выполнение.
Можно использовать команду
/home/larry# chmod u+x makebook
чтобы дать самому себе разрешение на выполнение
shell-сценария makebook.