Eu acho que o que está acontecendo é que o que você pretende ser seu primeiro
O parâmetro está sendo interpretado por getopt como optstring . o
O início da página getopt man lista três sinopses. Você parece
estar usando o segundo:
'getopt [options] [--] optstring parameters'
Observe como, após o -- , o primeiro item não é parameters , mas
optstring .
Enquanto estamos nisso, devo mencionar que o bash tem uma versão interna
de getopt , chamado getopts com o s à direita. Todas as outras coisas
sendo igual, usar o recurso interno do bash deve ser mais eficiente.