Книга: Искусство программирования на языке сценариев командной оболочки
Приложение C. Коды завершения, имеющие предопределенный смысл
Приложение C. Коды завершения, имеющие предопределенный смысл
Таблица C-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[ 67 ] имеют предопределенное значение, поэтому вам следует избегать употребления этих кодов для своих нужд. Завершение сценария с кодом возврата exit 127, может привести в замешательство при поиске ошибок в сценарии (действительно ли он означает ошибку "команда не найдена"? Или это предусмотренный программистом код завершения?). В большинстве случаев, программисты вставляют exit 1, в качестве реакции на ошибку. Так как код завершения 1 подразумевает целый "букет" ошибок, то в данном случае трудно говорить о какой либо двусмысленности, хотя и об информативности -- тоже.
Не раз предпринимались попытки систематизировать коды завершения (см. /usr/include/sysexits.h), но эта систематизация предназначена для программистов, пишущих на языках C и C++. Автор документа предлагает ограничить коды завершения, определяемые пользователем, диапазоном 64 - 113 (и, само собой разумеется -- 0, для обозначения успешного завершения), в соответствии со стандартом C/C++. Это сделало бы поиск ошибок более простым.
Все сценарии, прилагаемые к данному документу, приведены в соответствие с этим стандартом, за исключением случаев, когда существуют отменяющие обстоятельства, например в Пример 9-2.
- Часть 1. Введение
- Часть 2. Основы
- Часть 3. Углубленный материал
- Часть 4. Материал повышенной сложности
- Литература
- Приложение A. Дополнительные примеры сценариев
- Приложение B. Маленький учебник по Sed и Awk
- Приложение C. Коды завершения, имеющие предопределенный смысл
- Приложение D. Подробное введение в операции ввода-вывода и перенаправление ввода-вывода
- Приложение E. Локализация
- Приложение F. История команд
- Приложение G. Пример файла .bashrc
- Приложение H. Преобразование пакетных (*.bat) файлов DOS в сценарии командной оболочки
- Приложение I. Упражнения
- Приложение J. Авторские права
- Сноски из книги
- Содержание книги
- Популярные страницы
- Приложение 9 Акт выполненных работ (к Договору на оказание информационных услуг)
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- Приложение 19 Образец должностной инструкции мерчендайзера
- 1. Смысл нормализации схем баз данных
- 1.1.1. Смысл, цель и задачи бизнес-тренинга
- Приложение I Диаграммы взаимовлияния
- Приложение 10. Коды ошибок
- Приложение 1 Оптические процессоры
- Приложение 1 Тестирование ПК при включении
- Приложение 2 Интернет-ресурсы
- Приложение 3 Производители компьютерного оборудования в Интернете
- Приложение 4 Материнская плата, основные термины