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