Espaço em branco inicial estranho no OPTARG ao usar getopts

2

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?

    
por GJ. 01.11.2014 / 02:59

1 resposta

1

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'
    
por 01.11.2014 / 16:35