getopts를 사용할 때 OPTARG의 이상한 선행 공백

getopts를 사용할 때 OPTARG의 이상한 선행 공백

나는 내가 겪고 있는 문제를 조사하는 데 꽤 많은 시간을 보냈지만 getopts 튜토리얼 중 어느 것도 getopts를 사용할 때 OPTARG의 선행 공백을 언급하지 않습니다.

Bash(Ubuntu 및 OSX)에서 다음 명령을 실행합니다.

OPTIND=1 && getopts ":n:" opt "-n 1" && echo "OPTARG: '$OPTARG'"

다음과 같이 에코됩니다.

OPTARG: ' 1'

그러나 이렇게 하면:

OPTIND=1 && getopts ":n:" opt "-n1" && echo "OPTARG: '$OPTARG'"

그런 다음 내가 기대하는 것을 얻습니다.

OPTARG: '1'

내가 온라인에서 읽은 것에서 :

대개하나 이상의 공백이 옵션 문자와 값을 구분합니다.;그러나 getopts는 문자 바로 뒤에 오는 값도 처리합니다.[인용하다]

위의 인용문이 getopts에 대해 일반적으로 적용되는 경우 OPTARG에서 선행 공백을 얻으려면 내가 뭘 잘못하고 있습니까?

답변1

"-n -1"앞의 공백이 유지되므로 주변의 큰따옴표를 생략해야 합니다 1.

OPTIND=1 && getopts ":n:" opt -n 1 && echo "OPTARG: '$OPTARG'"

다음을 제공합니다:

OPTARG: '1'

관련 정보