Это работает:
#! /bin/bash
set -o errexit
trap 'echo Error on line $LINENO' ERR
echo "start"
false
Вывод:
start
Error on line 6
Когда тот же код выполняется в функции, ловушка не выполняется:
#! /bin/bash
set -o errexit
trap 'echo Error on line $LINENO' ERR
function willFail() {
false
}
echo "start"
willFail
echo "end"
Вывод:
start
Как заставить ловушку выполняться, когда что-то не работает внутри функции?