getopt optarg 예제
또한 한 번만 옵션을 사용하는 경우 적용하는 것도 귀하에게 달려 있습니다. 일반적으로 는 상관 하지 않습니다 하지만 매개 변수를 필요로 하는 옵션에 대 한 여분의 부지런 하 게 할 수 있습니다. 예를 들어 다음 -f: optstring은 합법적인 옵션 문자를 포함하는 문자열을 확인하여 아래 코드를 보다 강력하게 만들 수 있습니다. 이러한 문자 뒤에 콜론이 있는 경우 이 옵션에는 인수가 필요하므로 getopt()는 동일한 argv 요소 또는 optarg에 다음 argv 요소의 텍스트에 대한 포인터를 배치합니다. 두 개의 콜론은 옵션 아르그가 선택적인 것을 의미합니다. 현재 argv 요소에 텍스트가 있는 경우(예: 옵션 이름 자체와 동일한 단어(예: “-oarg”)에서 텍스트가 있는 경우 optarg로 반환되고 그렇지 않으면 optarg가 0으로 설정됩니다. 이것은 GNU 확장입니다. optstring에 세미콜론 다음에 W가 포함된 경우 -W foo는 긴 옵션–foo로 처리됩니다. (-W 옵션은 구현 확장을 위해 POSIX.2에서 예약합니다.) 이 동작은 GNU 확장이며 glibc 2 이전 라이브러리에서는 사용할 수 없습니다. Lisp에는 일반적인 표준 라이브러리가 없는 다양한 방언이 있습니다. Lisp의 일부 방언에 대한 getopt의 일부 타사 구현이 있습니다. 일반적인 Lisp는 눈에 띄는 타사 구현을 가지고 있습니다.
파이썬은 C의 getopt 및 GNU 확장을 기반으로 하는 표준 라이브러리에 모듈을 포함합니다. [8] 파이썬의 표준 라이브러리에는 사용하기 에 더 편리한 옵션을 구문 분석하는 다른 모듈도 포함되어 있습니다. [9] [10] getopt은 적어도 1980년[1]로 거슬러 올라가며, AT&T가 텍사스 주 달라스에서 열린 1985년 UNIFORUM 컨퍼런스에서 처음 출판되었으며, 이를 공개 도메인에서 사용할 수 있도록 의도했습니다. [인용 필요] 그것의 버전은 이후 유닉스의 다른 맛에 의해 포착되었다 (4.3BSD, 리눅스, 기타). UNistd.h 헤더 파일의 일부로 POSIX.2 표준에 지정됩니다. getopt의 파생 상품은 명령줄 옵션을 구문 분석하기 위해 많은 프로그래밍 언어에 대해 만들어졌습니다. getopt()는 옵트인드를 변경하지 않고 -1을 반환해야 합니다. If: getopt() 함수는 명령줄 인수를 구문 분석합니다.
인수 argc 및 argv는 프로그램 호출시 main() 함수에 전달되는 인수 수와 배열입니다. `-`로 시작하는 argv의 요소(정확히 “-” 또는 “–“가 아님)는 옵션 요소입니다. 이 요소의 문자(초기 `-`제외)는 옵션 문자입니다. getopt()가 반복적으로 호출되면 각 옵션 요소에서 각각의 옵션 문자를 연속적으로 반환합니다. 표준 POSIX.2 옵션 구문 외에도 getopts는 +가 앞에 오는 옵션 문자를 인식할 수도 있습니다. 이러한 옵션을 처리하는 방법에는 두 가지가 있습니다. getopt()가 누락된 인수를 감지하고 optstring의 첫 번째 문자가 콜론(`:`)인 경우 콜론(`:`)이 반환됩니다. 이전 예제에서 호출을 변경한 후 차이점이 명확해집니다.
getopt()가 optstring에 포함되지 않은 argv에서 옵션 문자를 찾거나 누락된 옵션 인수를 감지하면 `?`를 반환하고 외부 변수 optopt를 실제 옵션 문자로 설정합니다. optstring의 첫 번째 문자(위에서 설명한 선택적 `+` 또는 `-`)가 콜론(`:`)인 경우 getopt()는 `?`대신 `:`를 반환하여 누락된 옵션 인수를 나타냅니다.