Quando você chama seu segundo script (eu o salvei como getoptit
) com:
getoptit -d -h
Isso imprimirá:
MYSQL_HOST='' MYSQL_USER='' MYSQL_PASS='' BACKUP_DIR='-h' Additionals:
Portanto, BACKUP_DIR é definido e você está testando com if [ ! "$BACKUP_DIR" ]; then
, se não estiver definido, por isso é normal que o código dentro dele não seja acionado.
Se você quiser testar se cada opção é configurada uma vez, é necessário fazer isso antes de executar o cálculo a partir do valor $ OPTARG. E você provavelmente também deve verificar o $ OPTARG para começar com '-'
(para o erro -d -h
) antes de atribuir:
...
d)
if [ ! -z "$BACKUP_DIR" ]; then
echo "backup dir already set"
exit 2
fi
if [ z"${OPTARG:0:1}" == "z-" ]; then
echo "backup dir starts with option string"
exit 2
fi
BACKUP_DIR=$OPTARG
;;
...