getopts h:
diz que a opção -h
requer um argumento. O argumento para uma opção pode estar na mesma palavra que a própria opção, ou se não houver nada lá na próxima palavra. A única maneira de especificar um argumento vazio é passar uma palavra vazia após a opção.
Quando você escreve ./ftpclean.sh -h -l
, -l
é o argumento para a opção -h
. Você também pode escrever ./ftpclean.sh -h-l
. Se você quiser passar um argumento vazio para -h
, escreva ./ftpclean.sh -h '' -l
.
Parece que você quer violar a convenção de argumentos Unix e exigir que os argumentos estejam na mesma palavra que o comando. Se você quiser fazer isso (o que eu recomendo strongmente, porque você vai confundir os usuários e fazê-los te xingar por fazer algo fora do padrão sem justificativa), getopts
não vai te ajudar muito, você seria melhor fazendo sua própria análise.