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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Источник