Как отменить эффект "set -e", который немедленно завершает работу bash в случае сбоя какой-либо команды? - PullRequest
180 голосов
/ 19 августа 2010

После ввода set -e в интерактивной оболочке bash, bash завершится немедленно, если любая из команд завершится с ненулевым значением. Как я могу отменить этот эффект?

Ответы [ 3 ]

281 голосов
/ 19 августа 2010

С set +e. Да, наоборот, вы включаете параметры оболочки с помощью set - и , отключаете их с помощью set +. Исторический изюм, дончан.

61 голосов
/ 08 февраля 2013

Может быть неудобно использовать set +e / set -e каждый раз, когда вы хотите переопределить его.Я нашел более простое решение.

Вместо того, чтобы делать это так:

set +e
command_that_might_fail_but_we_want_to_ignore_it
set -e

вы можете сделать это так:

command_that_might_fail_but_we_want_to_ignore_it || true

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

command_that_might_fail_but_we_want_to_ignore_it || :

Надеюсь, это поможет!

18 голосов
/ 19 августа 2010
  • Использование + вместо - приводит к отключению этих флагов.

Источник

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