Опция командной строки | Опция команды 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 | Выдает сообщение об ошибке при использовании неопределенной переменной |
Вы можете установить опции с помощью флагов -о
и сбросить их с помощью флагов +о
подобным же образом в сокращенных версиях. Получить простое отслеживание выполнения можно, используя опцию xtrace
. Для начала вы можете применить опцию командной строки, но для более тщательной отладки следует поместить опции xtrace
(задавая выполнение и сброс отслеживания выполнения) внутрь сценария, в тот фрагмент кода, который создает проблему. Отслеживание выполнения заставляет командную оболочку перед выполнением каждой строки сценария выводить на экран эту строку и подставлять в нее значения используемых переменных.
Для установки опции xtrace
используйте следующую команду:
set -о xtrace
Для того чтобы снова отключить эту опцию, применяйте следующую команду:
set +о xtrace
Уровень выполняемых подстановок задается (по умолчанию) количеством знаков +
в начале каждой строки. Вы можете заменить знак +
на что-то более осмысленное, определив переменную командной оболочки PS4
в вашем файле конфигурации оболочки.
В командной оболочке также можно выяснить состояние программы после ее завершения, перехватив сигнал EXIT
с помощью строки, подобной приведенной далее и помещенной в начале вашего сценария:
trap 'echo Exiting: critical variable = $critical_variable' EXIT
По направлению к графическому режиму — утилита
Прежде чем мы закончим обсуждение сценариев командной оболочки, обратимся к еще одному средству, которое, хотя, строго говоря, и не является частью оболочки, в основном полезно применять именно в программах командной оболочки.
Если вы знаете, что ваш сценарий придется выполнять только с консоли ОС Linux, существует довольно изящный способ оживить сценарий, применяя служебную команду dialog
. Она использует средства псевдографики текстового режима и цвет, но при этом выглядит привлекательно.
В некоторых дистрибутивах команда dialog
по умолчанию не устанавливается; например, в Ubuntu вам, возможно, придется добавить совместно поддерживаемые репозитарии для поиска готовой версии. В других дистрибутивах вы можете найти уже установленный альтернативный вариант, gdialog
. Он очень похож, но рассчитан на пользовательский интерфейс GNOME, применяемый для отображения диалоговых окон команды. В этом случае вы получите настоящий графический интерфейс. Как правило, в любой программе, использующей команду dialog
, можно заменить все вызовы этой команды на gdialog
, и вы получите графическую версию вашей программы. В конце этого раздела мы покажем пример программы, использующей команду gdialog
.
Общая концепция утилиты dialog
проста — одна программа с множеством параметров и опций, позволяющих отображать различные типы графических окон, начиная с простых окон с кнопками типа Yes/No (Да/Нет) и заканчивая окнами ввода и даже выбором пункта меню. Утилита обычно возвращает результат, когда пользователь выполнил какой-либо ввод, и результат может быть получен или из статуса завершения, или, если вводился текст, извлечением стандартного потока ошибок.
Прежде чем переходить к подробностям, давайте рассмотрим очень простой пример применения утилиты dialog
. Вы можете вызывать ее непосредственно из командной строки, что прекрасно с точки зрения создания прототипов. Поэтому создадим простое окно сообщений для отображения традиционной первой программы: