Você precisa inicializar MODE
como algum valor diferente de SMTH
, SMTH2
e SMTH3
. Em seguida, verifique se MODE está no valor inicial. Caso contrário, envie uma mensagem de erro e saia. Você precisa sair após o erro, caso contrário, o script continuará sendo executado. A versão modificada do seu script abaixo deve ajudá-lo a começar.
MODE=0
EMSG="More than one of -d, -e, -f has been specified"
while getopts "a:b:c:def" variable; do
case $variable in
a) a=$OPTARG ;;
b) b=$OPTARG ;;
c) c=$OPTARG ;;
d) if [ $MODE = 0 ] ; then MODE=SMTH ; else echo $EMSG ; exit 1 ; fi ;;
e) if [ $MODE = 0 ] ; then MODE=SMTH2 ; else echo $EMSG ; exit 1 ; fi ;;
f) if [ $MODE = 0 ] ; then MODE=SMTH3 ; else echo $EMSG ; exit 1 ; fi ;;
esac
done