Acho que você deseja usar uma armadilha de erros em vez de um wrapper em torno da avaliação.
err_handler () {
code=$?
if [ $code -ne 0 ]
then
echo "oops $1 didn't work"
exit 1
fi
}
trap 'err_handler' ERR
myvar=$(mktemp -p ./)
trap ERR