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