2 идеи, которые "раздвигают границы". Используйте с осторожностью , так как будущие изменения в исходных сценариях могут нарушить логику c. Рекомендуется, только если есть способ следить за тем, что скрипт работает нормально - например, при интерактивном исполнении и т. Д. c.
Я бы не использовал подобные решения в любой производственной / критической системе.
Вариант 1. Псевдоним 'выход' к 'возврату' при поиске файла.
Предполагается, что ВСЕ операторы 'exit' в тесте. sh должны быть заменены на «возврат», и при условии, что вы готовы пойти на риск будущих изменений в тесте. sh, рассмотрите возможность использования alias
перед поиском
alias exit=return
source test.sh
unalias exit
func "foo"
Вариант 2: автоматическое обновление функция, которая использует 'exit' для использования return.
source test.sh
body=$(type func | tail +2 | sed -e 's/exit/return/g')
eval "$body"