Você deve deixar as aspas duplas em torno de "-n -1"
, pois é isso que preserva o espaço antes do 1
:
OPTIND=1 && getopts ":n:" opt -n 1 && echo "OPTARG: '$OPTARG'"
dá:
OPTARG: '1'
Eu passei um bom tempo pesquisando o problema que encontrei, mas nenhum dos tutoriais do getopts dizia algo sobre o principal espaço em branco no OPTARG ao usar o getopts.
No bash (no Ubuntu e OSX), executando os comandos abaixo:
OPTIND=1 && getopts ":n:" opt "-n 1" && echo "OPTARG: '$OPTARG'"
e echos:
OPTARG: ' 1'
No entanto, se eu executar isso:
OPTIND=1 && getopts ":n:" opt "-n1" && echo "OPTARG: '$OPTARG'"
então eu vou conseguir o que eu espero:
OPTARG: '1'
Pelo que li on-line:
Normally one or more blanks separate the value from the option letter; however, getopts also handles values that follow the letter immediately [Reference]
Se a citação acima é universalmente correta para getopts, o que eu faço de errado para conseguir o espaço em branco líder no OPTARG?