Você não está passando nenhum argumento para a sua função main
. Se você quiser que essa função obtenha os mesmos argumentos que foram passados para o script, passe-os junto com:
main "$@"
Em vez de:
main
Também relevante para o seu script:
- diferença entre “function foo () {}” e “foo () {}”
- Por que o printf é melhor que o eco?
- Implicações de segurança do esquecimento de citar uma variável em shells bash / POSIX
- você deseja gerar erros no stderr:
echo >&2 Unknown option
- você gostaria de retornar um status de saída diferente de zero em caso de erro (
return 1
) - ao chamar
getopts
em uma função, é um bom hábito definirOPTIND
para 1 inicialmente, no caso degetopts
ter sido chamado antes (por exemplo, em uma invocação anterior da função).