getopts
remove o sinal "-" das opções.
Então você precisa:
while getopts ha:b: OPT; do
case $OPT in
h)
help
exit
;;
a)
....
E lembre-se de limpar suas variáveis antes de chamar getopts
( unset OPTA OPTB
) como elas podem estar no ambiente recebido pelo seu script. Considere também o caso de se chamar o script com -b ""
é válido ou não, pois seu [[ -z $OPTB ]]
não diferencia "no -b
option" da opção " -b
com argumento vazio".