Para que um shell script possa chamar uma função, essa função deve ter sido definida antes de chamá-la. Este não é o caso no seu código.
Para corrigir, mova a função para cima do loop de análise da linha de comando.
Além disso, eu faria com que o último case
teste fosse *)
para capturar qualquer opção não tratada ( /?
nunca corresponderia a um único caractere de opção). E o utilitário getopts
já enviaria uma mensagem de erro, assim você não precisa repetir isso ( $OPTARG
também pode não ser o que você usa aqui, mas $opt
).