Как я должен указать, что мой скрипт оболочки Python возвращает ошибку? - PullRequest
7 голосов
/ 06 апреля 2011

Я пишу сценарий оболочки на Python (#!/usr/bin/env python). Я немного новичок в сценариях оболочки в целом, поэтому прошу прощения, если я что-то неправильно понимаю.

В настоящее время я понимаю, что если мой сценарий оболочки работает успешно, я должен вызвать sys.exit(), чтобы указать, что он успешно выполнен (т.е. вернуть 0).

Если я обнаружил ошибку (в частности, что пользователь передал аргумент, которого я не ожидал), что я должен вернуть и как?

Можно ли просто вызвать sys.exit() с любым ненулевым значением, например sys.exit(1)

Ответы [ 2 ]

6 голосов
/ 06 апреля 2011

Большинство утилит Shell имеют различные возвращаемые значения в зависимости от ошибки.

Стандарт при выходе с кодом состояния 0 означает, что выполнение завершилось успешно.

Для других кодов ошибок это сильно зависит от самой утилиты. Скорее всего, вы узнаете о кодах ошибок на страницах руководства вышеупомянутых утилит.

Вот простой пример справочной страницы ls:

Exit status:
   0      if OK,

   1      if minor problems (e.g., cannot access subdirectory),

   2      if serious trouble (e.g., cannot access command-line argument).

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

6 голосов
/ 06 апреля 2011

Подойдет любое ненулевое значение. Так что sys.exit(1) правильно. Эти коды ошибок полезны для использования скриптов в командной строке:

python test.py && echo 'success'

Приведенный выше текст не будет отображать «успех», когда ваш скрипт возвращает что-либо, кроме 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...