|
Поиск по сайту:
Главная
О проекте
Web-мастеру
HTML & JavaScript
SSI
Perl
PHP
XML & XSLT
Unix Shell
MySQL
Безопасность
Хостинг
Другое
|
|
Приложение D. Коды завершения, имеющие предопределенный смысл
Таблица D-1. "Зарезервированные" коды
завершения
Код завершения |
Смысл |
Пример |
Примечание |
1 |
разнообразные ошибки |
let "var1 = 1/0" |
различные ошибки, такие как "деление на ноль" и пр. |
2 |
согласно документации к Bash -- неверное
использование встроенных команд |
Ё |
Встречаются довольно редко, обычно код
завершения возвращается равным 1 |
126 |
вызываемая команда не может быть
выполнена |
Ё |
возникает из-за проблем с правами
доступа или когда вызван на исполнение неисполняемый
файл |
127 |
"команда не
найдена" |
Ё |
Проблема связана либо с переменной
окружения $PATH, либо с
неверным написанием имени команды |
128 |
неверный аргумент команды exit |
exit 3.14159 |
команда exit может принимать только
целочисленные значения, в диапазоне 0 - 255 |
128+n |
фатальная ошибка по сигналу "n" |
kill -9
$PPID сценария |
$? вернет 137 (128
+ 9) |
130 |
завершение по Control-C |
Ё |
Control-C -- это выход по сигналу 2,
(130 = 128 + 2, см. выше) |
255* |
код завершения вне допустимого
диапазона |
exit -1 |
exit
может принимать только целочисленные значения, в
диапазоне 0 - 255 |
Согласно этой таблице, коды завершения 1 - 2, 126 - 165 и 255
имеют предопределенное значение, поэтому вам следует избегать
употребления этих кодов для своих нужд. Завершение сценария с
кодом возврата exit 127,
может привести в замешательство при поиске ошибок в сценарии
(действительно ли он означает ошибку "команда не найдена"? Или это
предусмотренный программистом код завершения?). В большинстве
случаев, программисты вставляют exit
1, в качестве реакции на ошибку. Так как код
завершения 1 подразумевает
целый "букет" ошибок, то в данном случае трудно
говорить о какой либо двусмысленности, хотя и об
информативности -- тоже.
Не раз предпринимались попытки систематизировать коды
завершения (см. /usr/include/sysexits.h), но эта систематизация
предназначена для программистов, пишущих на языках C и C++. Автор
документа предлагает ограничить коды завершения, определяемые
пользователем, диапазоном 64 - 113 (и, само собой разумеется --
0, для обозначения успешного завершения), в соответствии со
стандартом C/C++. Это сделало бы поиск ошибок более простым.
Все сценарии, прилагаемые к данному документу, приведены в
соответствие с этим стандартом, за исключением случаев, когда
существуют отменяющие обстоятельства, например в Пример 9-2.
|
Обращение к переменной $?,
из командной строки, после завершения работы сценария,
дает результат, в соответствии с таблицей, приведенной
выше, но только для Bash или sh. Под
управлением csh или tcsh значения могут в некоторых
случаях отличаться.
|
Назад |Содержание | Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|
|
|