Коди завершення, що мають зумовлений зміст

Таблиця C-1. "Зарезервовані" коди завершення

Відповідно до цієї таблиці, коди завершення 1 - 2, 126 - 165 і 255 [1] мають зумовлене значення, тому вам слід уникати вживання цих кодів для своїх потреб. Завершення сценарію з кодом повернення exit 127, може збентежити під час пошуку помилок у сценарії (чи дійсно він означає помилку "команда не знайдена" ? Чи це передбачений програмістом код завершення?). У більшості випадків програмісти вставляють exit 1, як реакцію на помилку. Оскільки код завершення 1 має на увазі цілий "букет" помилок, то в даному випадку важко говорити про якусь двозначність, хоча і про інформативність - теж.

Неодноразово робилися спроби систематизувати коди завершення (див. /usr/include/sysexits.h), але ця систематизація призначена для програмістів, які пишуть мовами C і C++. Автор документа пропонує обмежити коди завершення, що визначаються користувачем, діапазоном 64 - 113 (і, зрозуміло - 0, для позначення успішного завершення), відповідно до стандарту C/C++. Це зробило б пошук помилок простішим.

Усі сценарії, що додаються до цього документа, приведені у відповідність до цього стандарту, за винятком випадків, коли існують скасовувальні обставини, наприклад, у Приклад 9-2.

Звертання до змінної $?, з командного рядка, після завершення роботи сценарію, дає результат, відповідно до таблиці, наведеної вище, але тільки Bash або sh . Під керуванням значення csh або tcsh можуть в деяких випадках відрізнятися.

Примітки

Вказівка ​​коду завершення за межами встановленого діапазону призводить до повернення помилкових кодів. Наприклад, exit3809 поверне код завершення, що дорівнює 225 .