Инсталляция Linux и первые шаги

         

Сценарии 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.


Содержание раздела