Читаем Свободные программы и системы в школе полностью

В сценарии на языке оболочки можно определить подпрограммы-функции. В функции определенными являются переменные, определенные сценарием (или его окружением) на момент вызова функции. Однако сама функция должна быть объявлена до ее вызова. Кроме того, функции при вызове можно передавать параметры (как любой команде), которые она может адресовать способом, указанным выше (Рис. 1-88).

Определение функции имеет вид, указанный на Рис. 1-89.

Рис. 1-89

Вызывается функция простым указанием ее имени в качестве команды (см. Рис. 1-90).

Рис. 1-90

Раскрытие команды

Крайне занимательной является возможность раскрыть целую команду, то есть включить в командную строку ее стандартный вывод. Для этого команда заключается в обратные апострофы «`» и «`», которые не следует путать ни с одиночными прямыми апострофами, ни с кавычками.

Рис. 1-91

В примере на Рис. 1-91 команда «echo» подается с тремя операндами, первый и последний из которых являются текстовыми константами, а второй – результатом раскрытия команды «ls *~ *.tmp», то есть списком файлов, соответствующих первому и второму шаблонам, указанным в качестве операндов команды «ls».

Включенный документ

В некотором смысле обратной по отношению к раскрытию команды с помощью обратных апострофов является конструкция включенного документа (или, конструкция «документ здесь»).

На Рис. представлена конструкция вида «<<цепочка», внешне похожая на перенаправление ввода команды из файла. Однако цепочка представляет собой не имя файла, а ограничивающую цепочку символов, а сам ввод осуществляется непосредственно из файла сценария (или, в данном случае, с терминала) до тех пор, пока очередная строка не совпадет с ограничивающей цепочкой (Рис. 1-92).

Рис. 1-92

Встроенный документ особенно удобен для сценариев, представляющих сильно параметризованные алгоритмы, указание данных для которых в отдельных файлах привело бы к большому количеству последних.

<p>1.11 Справочник по наиболее употребительным стандартным командам ОС</p>

exit – завершить исполнение оболочки

Синтаксис: exit [код_зав]

Семантика: exit завершает исполнение оболочки с кодом возврата (0-255), указанным в «код_зав». Перехват «exit» командой «trap» выполняется до завершения оболочки, если только «exit» выполняется не из этой команды «trap». Если n не указана, код возврата равен коду возврата последней выполненной команды. При выполнении «exit» из «trap» последней командой считается команда, выполненная непосредственно до выполнения «trap».

cal – вывести календарь

Синтаксис: cal [[месяц] год ]

Семантика: cal выводит на стандартный вывод календарь, используя юлианское летоисчисление для дат с 1 января 1 г. по 2 сентября 1752 г. и григорианское – с 14 сентября 1752 г. по 31 декабря 9999 г.

Операнды:месяц – отображаемый месяц указывается десятичным числом с 1 (январь) по 12 (декабрь). По умолчанию – текущий месяц. Год – отображаемый год указывается десятичным числом с 1 до 9999. По умолчанию – текущий год.

date – вывести или установить дату и время

Синтаксис: date [-u] [+формат] ; date [-u]ммддччмм[[сс]гг]

Семантика: date выводит дату и время. Поданная с операндом в формате даты, date пытается установить время и дату. Операнд, начинающийся с «+» устанавливает формат вывода данных.

Ключ: -u – выполнить команду, как если бы переменная TZ (часовой пояс) была установлена в «UTC0» или «GMT0» (время по Гринвичу).

Перейти на страницу:

Похожие книги