Я предпочитаю писать код сплошной оболочки, поэтому errexit и nounset всегда установлены.
Следующий код остановится на строке bad_command
#!/bin/bash
set -o errexit ; set -o nounset
bad_command # stop here
good_command
Я хочу захватить его, вот мой метод
#!/bin/bash
set -o errexit ; set -o nounset
rc=1
bad_command && rc=0 # stop here
[ $rc -ne 0 ] && do_err_handle
good_command
Есть ли лучший или более чистый метод
Мой ответ:
#!/bin/bash
set -o errexit ; set -o nounset
if ! bad_command ; then
# error handle here
fi
good_command