Розглянемо цей фрагмент:
stop () {
echo "${1}" 1>&2
exit 1
}
func () {
if false; then
echo "foo"
else
stop "something went wrong"
fi
}
Зазвичай, коли func
він викликається, це призведе до припинення дії сценарію, що і є передбачуваною поведінкою. Однак, якщо він виконується в підколонці, наприклад в
result=`func`
він не вийде зі сценарію. Це означає, що код виклику повинен кожен раз перевіряти стан виходу функції. Чи є спосіб цього уникнути? Це для чого set -e
?
func
.