Основы программирования в Linux
Шрифт:
Рассмотрим упражнение 2.19.
Простейший пример просто передает входные данные команде
Этот пример выводит на экран следующие строки:
hello
this is a here
document
Встроенные документы могут показаться странным средством, но они очень полезны, т.к. позволяют запускать интерактивные программы, например редактор, и снабжать их каким-либо заранее определенным вводом. Но особенно часто они применяются при выводе
Если вы хотите обработать несколько строк заранее определенным способом, можно применить в сценарии строчный редактор ed и передать ему команды из встроенного документа (упражнение 2.20).
1. Начнем с файла, названного a_text_file и содержащего следующие строки:
2. Вы можете отредактировать этот файл, совместно используя встроенный документ и редактор ed:
Если вы выполните этот сценарий, то увидите, что теперь файл содержит следующие строки:
Как это работает
Сценарий командной оболочки запускает редактор ed и передает ему команды, необходимые для перехода к третьей строке, удаления строки и затем замены ее содержимым текущей строки (поскольку строка 3 (line 3) была удалена, теперь текущая строка — последняя строка файла). Эти команды редактора ed берутся из строк сценария, формирующих встроенный документ, строк между маркерами
Обратите внимание на знак
Отладка сценариев
Обычно отлаживать сценарии командной оболочки довольно легко, хотя специальных вспомогательных средств отладки не существует. В этом разделе мы дадим краткий обзор наиболее распространенных приемов.
Когда возникает ошибка, командная оболочка, как правило, выводит на экран номер строки, содержащей ошибку. Если ошибка сразу не видна, вы можете добавить несколько дополнительных команд
Поскольку сценарии обрабатываются интерпретатором, нет затрат на компиляцию при корректировке и повторном выполнении сценария. Основной способ отслеживания наиболее трудно выявляемых ошибок — задание различных опций командной оболочки. Для этого вы можете применять опции командной строки после запуска командной оболочки или использовать команду
Таблица 2.19
Опция командной строки | Опция команды set | Описание |
---|---|---|
sh -n <сценарий> | set -о noexec set -n | Только проверяет синтаксические ошибки; не выполняет команды |
sh -v <сценарий> | set -о verbose set -v | Выводит на экран команды перед их выполнением |
sh -х <сценарий> | set -о xtrace set -x | Выводит на экран команды после обработки командной строки |
sh -u <сценарий> | set -o nounset set -u | Выдает сообщение об ошибке при использовании неопределенной переменной |
Вы можете установить опции с помощью флагов
Для установки опции
Для того чтобы снова отключить эту опцию, применяйте следующую команду:
Уровень выполняемых подстановок задается (по умолчанию) количеством знаков
В командной оболочке также можно выяснить состояние программы после ее завершения, перехватив сигнал
По направлению к графическому режиму — утилита dialog
Прежде чем мы закончим обсуждение сценариев командной оболочки, обратимся к еще одному средству, которое, хотя, строго говоря, и не является частью оболочки, в основном полезно применять именно в программах командной оболочки.
Если вы знаете, что ваш сценарий придется выполнять только с консоли ОС Linux, существует довольно изящный способ оживить сценарий, применяя служебную команду
В некоторых дистрибутивах команда