Se você estiver executando essa função a partir de um prompt de shell, o comando exit
está instruindo o shell a sair em vez da função. Você provavelmente deve usar return
.
Você pode usar um valor de retorno com return
e testar para isso no script que chama a função e usar o exit
lá para sair do script (ou não, dependendo do valor de retorno ).
$ testfunc(){ return ${1:-0}; }
$ testfunc
$ echo $?
0
$ testfunc 0
$ echo $?
0
$ testfunc 1
$ echo $?
1