Я писал сценарий и столкнулся со странной проблемой. Если бы я создал сценарий, содержащий набор функций, которые могут вызывать функцию ошибки, которая выводит строку и затем завершается, он выйдет из моей оболочки. Я знаю, почему он это делает. Это связано с тем, что вызов функции находится в том же пространстве процесса, что и вызывающая сторона (по крайней мере, в bash), поэтому выход внутри функции завершает текущий процесс с предоставленным кодом выхода. Пример:
error()
{
echo $1
exit 1
}
fn()
{
if [ $# == 0 ]; then
error "Insufficient parameters."
fi
# do stuff
}
$ fn
Insufficient parameters.
[shell terminates]
Итак, мой вопрос: могу ли я выйти из всех функций в стеке функций, не закрывая текущую оболочку и не порождая новую подоболочку?
Спасибо