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


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

3 151

3 ответа:

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

это может быть неуместно использовать 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 || :

надеюсь, что это помогает!

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

источник