Я предпочитаю писать сплошную оболочку, поэтому набор 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