правильный способ обнаружения кода выхода из оболочки, когда установлен параметр errexit

Я предпочитаю писать код сплошной оболочки, поэтому 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
42
задан Daniel YC Lin 10 January 2017 в 08:07
поделиться