Код завершения
Код завершения выполненной команды — это значение, возвращаемое системным вызовом waitpid или эквивалентной функцией. Коды завершения находятся в диапазоне от 0 до 255, однако, как объясняется ниже, оболочка может особым образом использовать значения выше 125. Коды завершения встроенных команд оболочки и составных команд также ограничены этим диапазоном. При определённых обстоятельствах оболочка использует специальные значения для обозначения конкретных видов сбоев.
С точки зрения оболочки команда, завершившаяся с нулевым кодом завершения, считается успешно выполненной. Таким образом, нулевой код завершения означает успех, а ненулевой — неудачу. Эта, на первый взгляд, нелогичная схема используется для того, чтобы существовал один однозначный способ обозначить успех и множество способов обозначить различные виды сбоев.
Если команда завершается из-за фатального сигнала с номером N, Bash использует в качестве кода завершения значение 128+N.
Если команда не найдена, дочерний процесс, созданный для её выполнения, возвращает код 127. Если команда найдена, но не является исполняемой, код возврата равен 126.
Если команда завершается с ошибкой из-за сбоя при подстановке или перенаправлении, код завершения больше нуля.
Код завершения используется условными командами Bash (см. Условные конструкции) и некоторыми конструкциями списков (см. Списки команд).
Все встроенные команды Bash возвращают нулевой код завершения при успешном выполнении и ненулевой код при сбое, поэтому их можно использовать в условных конструкциях и списках. Все встроенные команды возвращают код завершения 2, указывающий на неправильное использование, как правило, на недопустимые параметры или отсутствие аргументов.
Код завершения последней команды доступен в специальном параметре $? (см. Специальные параметры).
Сама Bash возвращает код завершения последней выполненной команды, если только не возникает синтаксическая ошибка; в этом случае она завершается с ненулевым значением. См. также встроенную команду exit (см. Встроенные команды оболочки Bourne.
Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
Licensed under the GNU Free Documentation License.
https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html