Как установить статус завершения сценария оболочки?

В последнее время мне было интересно, как вы измените статус выхода или конечный статус скрипта в bash. Например; скажем, мы запускаем test.sh и внутри программы выходим с помощью exit 0 ... Мне было интересно, что будет обычной процедурой, чтобы изменить этот статус выхода, чтобы сказать 1? Я знаю, что вы можете использовать exit 1, но является ли это фактическим стандартом установки статуса выхода?

-1
задан 18 December 2017 в 01:46

6 ответов

Не нулевой выход указывает на ошибку. Нуль указывает на успех. Попытка удалить файл, который не существует, в то время как сбой, столь же хорош в большинстве случаев, как и фактически его удаление, поэтому ваш сценарий должен решить, следует ли рассматривать такие вещи как неудачу или успех.

Итак, какие цифры вы должны использовать? За все мои 30 лет, используя Unix, я никогда не видел стандарта. Что важно для ясности, если другие используют ваш скрипт, так это то, что вы либо используете только один код выхода для отказа, либо определяете, что означает этот код выхода. Определение может быть включено многими способами. Одним из способов является эхо-код выхода вместе со списком возможных причин для стандартной ошибки, как в

echo -e "Return code Error: " $Error "\n Possible errors are\n" \
"1 = missing parameter\n" \
"2 = Could not do what you wanted \n" >&2

. Конечно, есть много альтернатив, таких как документирование ошибок в коде с комментариями (лучше всего это сделать а также сделать необязательный параметр для скрипта, как в

$myscript -error [other parameters if any]

, который печатает все возможные ошибки.

Я использовал коды ошибок из сценариев, называемых по другим сценариям для возврата информации:

0 - успех, положительная ошибка, отрицательное значение - нет ошибки, но необходимо специальное действие

Это не хорошо, если вызываемый скрипт запускается напрямую так как это может запутать пользователя, но вызываемый скрипт может проверить это условие.

1
ответ дан 22 May 2018 в 16:56

Не нулевой выход указывает на ошибку. Нуль указывает на успех. Попытка удалить файл, который не существует, в то время как сбой, столь же хорош в большинстве случаев, как и фактически его удаление, поэтому ваш сценарий должен решить, следует ли рассматривать такие вещи как неудачу или успех.

Итак, какие цифры вы должны использовать? За все мои 30 лет, используя Unix, я никогда не видел стандарта. Что важно для ясности, если другие используют ваш скрипт, так это то, что вы либо используете только один код выхода для отказа, либо определяете, что означает этот код выхода. Определение может быть включено многими способами. Одним из способов является эхо-код выхода вместе со списком возможных причин для стандартной ошибки, как в

echo -e "Return code Error: " $Error "\n Possible errors are\n" \ "1 = missing parameter\n" \ "2 = Could not do what you wanted \n" >&2

. Конечно, есть много альтернатив, таких как документирование ошибок в коде с комментариями (лучше всего это сделать а также сделать необязательный параметр для скрипта, как в

$myscript -error [other parameters if any]

, который печатает все возможные ошибки.

Я использовал коды ошибок из сценариев, называемых по другим сценариям для возврата информации:

0 - успех, положительная ошибка, отрицательное значение - нет ошибки, но необходимо специальное действие

Это не хорошо, если вызываемый скрипт запускается напрямую так как это может запутать пользователя, но вызываемый скрипт может проверить это условие.

1
ответ дан 18 July 2018 в 00:58

Не нулевой выход указывает на ошибку. Нуль указывает на успех. Попытка удалить файл, который не существует, в то время как сбой, столь же хорош в большинстве случаев, как и фактически его удаление, поэтому ваш сценарий должен решить, следует ли рассматривать такие вещи как неудачу или успех.

Итак, какие цифры вы должны использовать? За все мои 30 лет, используя Unix, я никогда не видел стандарта. Что важно для ясности, если другие используют ваш скрипт, так это то, что вы либо используете только один код выхода для отказа, либо определяете, что означает этот код выхода. Определение может быть включено многими способами. Одним из способов является эхо-код выхода вместе со списком возможных причин для стандартной ошибки, как в

echo -e "Return code Error: " $Error "\n Possible errors are\n" \ "1 = missing parameter\n" \ "2 = Could not do what you wanted \n" >&2

. Конечно, есть много альтернатив, таких как документирование ошибок в коде с комментариями (лучше всего это сделать а также сделать необязательный параметр для скрипта, как в

$myscript -error [other parameters if any]

, который печатает все возможные ошибки.

Я использовал коды ошибок из сценариев, называемых по другим сценариям для возврата информации:

0 - успех, положительная ошибка, отрицательное значение - нет ошибки, но необходимо специальное действие

Это не хорошо, если вызываемый скрипт запускается напрямую так как это может запутать пользователя, но вызываемый скрипт может проверить это условие.

1
ответ дан 24 July 2018 в 17:18

Статус выхода скрипта - это статус выхода последней выполненной команды. Например, если последний оператор пытается создать каталог с mkdir some/path, и команда не выполняется, тогда код выхода самого скрипта будет кодом выхода сбой mkdir.

Если вы хотите установить другой код выхода, вы можете использовать exit builtin:

exit: exit [n]
    Exit the shell with a status of N.  If N is omitted, the exit status
    is that of the last command executed.

. Если ваш скрипт обнаружил, что что-то пошло не так, тогда рекомендуется выйти с ненулевым кодом. Обычно используется 1, и это достаточно хорошо, пока вы не захотите дать другой сигнал программам-абонентам, чтобы иметь возможность реагировать на разные типы ошибок по-разному. Если у вас нет конкретной идеи, просто используйте exit 1.

3
ответ дан 22 May 2018 в 16:56

Статус выхода скрипта - это статус выхода последней выполненной команды. Например, если последний оператор пытается создать каталог с mkdir some/path, и команда не выполняется, тогда код выхода самого скрипта будет кодом выхода сбой mkdir.

Если вы хотите установить другой код выхода, вы можете использовать exit builtin:

exit: exit [n] Exit the shell with a status of N. If N is omitted, the exit status is that of the last command executed.

. Если ваш скрипт обнаружил, что что-то пошло не так, тогда рекомендуется выйти с ненулевым кодом. Обычно используется 1, и это достаточно хорошо, пока вы не захотите дать другой сигнал программам-абонентам, чтобы иметь возможность реагировать на разные типы ошибок по-разному. Если у вас нет конкретной идеи, просто используйте exit 1.

3
ответ дан 18 July 2018 в 00:58

Статус выхода скрипта - это статус выхода последней выполненной команды. Например, если последний оператор пытается создать каталог с mkdir some/path, и команда не выполняется, тогда код выхода самого скрипта будет кодом выхода сбой mkdir.

Если вы хотите установить другой код выхода, вы можете использовать exit builtin:

exit: exit [n] Exit the shell with a status of N. If N is omitted, the exit status is that of the last command executed.

. Если ваш скрипт обнаружил, что что-то пошло не так, тогда рекомендуется выйти с ненулевым кодом. Обычно используется 1, и это достаточно хорошо, пока вы не захотите дать другой сигнал программам-абонентам, чтобы иметь возможность реагировать на разные типы ошибок по-разному. Если у вас нет конкретной идеи, просто используйте exit 1.

3
ответ дан 24 July 2018 в 17:18

Другие вопросы по тегам:

Похожие вопросы: