Não há uma maneira legal (estou ciente disso) de fazer isso, mas se você estiver disposto a pagar o preço ...
Em vez de colocar o código em funções, você pode colocá-lo nos arquivos de origem. Se as funções precisarem de argumentos, você deverá prepará-las com set
:
set -- arg1 arg2 arg3
source ...
Três arquivos:
-
testscript.sh
#! /bin/bash startdir="$PWD" echo mainscript while true; do echo "begin: helper loop" source "${startdir}/func_1" echo "end: helper loop" break done echo mainscript
-
func_1
echo "begin: func_1" source "${startdir}/func_2" echo "end: func_1"
-
func_2
echo "begin: func_2" echo break from func_2 break 100 echo "end: func_2"
Resultado:
> ./testscript.sh
mainscript
begin: helper loop
begin: func_1
begin: func_2
break from func_2
mainscript