tente isto:
$ ./testShell.sh -j value1 -e value4 -D jvalue3 -p value2
j=value1
e=value4
remaining=jvalue3 -p value2
Observe os espaços entre as opções e as strings de opção.
help getopts
diz:
OPTSTRING contains the option letters to be recognized; if a letter
is followed by a colon, the option is expected to have an argument,
which should be separated from it by white space.
i.e. o espaço entre a opção e qualquer cadeia de opções é necessário.
Se você precisar de mais do que o getopt integrado do bash é capaz, o utilitário / usr / bin / getopt suporta opções longas e curtas, com ou sem espaços entre as opções e a cadeia de opções. também suporta recursos extras como argumentos opcionais de strings.
BTW, / usr / bin / getopt está disponível no pacote util-linux no debian e derivados como o ubuntu ... não sei sobre outras distros ou * nixes, mas a fonte estará disponível a partir dos arquivos debian se você puder ' Não o encontre em nenhum outro lugar.