Есть ли способ отключить ловушку в обработчике ловушек?
Я хотел бы упростить некоторый код с помощью ловушки RETURN.my_func вернет значение my_command.Tmpfile будет очищен при возврате my_func.Этот метод позволил бы мне не назначать временную переменную для хранения $?из my_func, пока я выполняю очистку.
Однако я не могу сбросить обработчик ловушек в обработчике, и очистка теперь вызывается после каждого возврата функции.
В конечном итоге, что я действительно хочу сделатьis cleanup после того, как my_command вызван, но все еще имеет его в качестве последней команды, поэтому возвращаемое значение неявно.Будем благодарны за любые предложенные альтернативы.
cleanup() { # generic cleanup w/ reset
"$@"
trap - RETURN
}
my_func() {
local -r tmpfile="/tmp/tmpfile"
trap "cleanup rm ${tmpfile}" RETURN
my_command -f ${tmpfile}
}
caller() {
if my_func ; then
do_success_ops
fi
}