Я привык к этому стилю на других языках:
do_something || (log_error; return 1) # do something, and if that fails, log the error and then return 1 no matter what, even if the logging fails.
Но я не могу найти эквивалент в bash. Проблема в том, что скобка работает как функция со своей областью действия, а возвращаемое значение 1 не будет иметь ожидаемого поведения.
Это то, что я до сих пор, но это не идеально:
! do_something && log_error && return 1
Проблема в том, что это! сбивает с толку, и возвращение 1 зависит от успешности регистрации.
Этот лучше, но более многословный:
do_something || (log_error; return 1) || return 1
Какие-нибудь мысли?