그것은 프로그램의 일부 버전에서 버그 인 것 같다. 그것은를 CentOS 7.3과 페도라 19
[vps1 ~]$ cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[vps1 ~]$ getopt --name xyz --options "xyz:" -- -x -z
xyz: option requires an argument -- 'z'
-x --
[vps1 ~]$ getopt -V
getopt from util-linux 2.23.2
에서의 나를 위해 작동하지만 (Windows 용 힘내에서) 내는 MinGW 쉘
$ getopt --name xyz --options "xyz:" -- -x -z
getopt: option requires an argument -- z
-x --
$ getopt -V
getopt from util-linux 2.26.2
업데이트하지 않습니다
: 그것은 작동 Linux의 2.27.1에서도 마찬가지입니다. Cygwin에서 (적어도 일부 버전에서는) 작동하지 않습니다. 따라서 문제는 Windows 포트 (Mingw와 Cygwin, 흥미롭게도)에있는 것 같습니다. /은을 사용 가지고, this commit 시도가 일부 environnments 처리 할 수 있기 때문에 (하지 리눅스, 특히 BSD)를 getopt
프로그램 :
나는 추측 (대상 타격의 큰되지 확률)을 던질거야 getprogname/setprogname
을 사용하여 argv[0]
대신에 "현재"프로그램 이름을 가져 오거나 설정하십시오.
#if defined (HAVE_SETPROGNAME) && !defined (__linux__)
setprogname(name);
자,
- Cygwin와는 MinGW/MSI에 모두 해당 기능을 지원하는 것을 가정 해 봅시다.
- 그러나, 그들은
HAVE_SETPROGNAME
, 문제를 바로 BSD 버전처럼, 또한
- 자신의
getopt
기능 (마음 당신,하지 프로그램)을 정의하는 경우 대신 argv[0]
의 getprogname
를 사용하는 부족 설명 될 것이다. 그러나, 나는 회의적입니다 - 특히 3 번 지점.
cygwin에서'getopt from util-linux 2.25.2'를 사용하고 있습니다. 최근 버그 또는 창과 관련이 있습니까? –
오히려 나중에, 나는 (업데이 트라고) 말하고 싶지만 ... – leonbloy
아마도 cygwin과 mingw 태그를 추가하여 몇몇 개발자를 유치 할 수 있습니다 ....? – leonbloy