here

enter getopts는 optstring에 나타나지 않는 옵션을 찾거나 옵션 값이 없는 경우 이름에 물음표(?)를 배치합니다. 그렇지 않으면 getopt()는 모든 명령줄 옵션이 구문 분석될 때 -1을 반환합니다. 당신은 우리가 사용하는 while 루프를 보고 조금 더 복잡하다고 생각할 수 있습니다. 첫째, getopt에 대 한 헤더를 포함 해야 합니다. 옵션이 argv 의 요소에 의해 가리키는 문자열의 마지막 문자인 경우 optarg는 argv의 다음 요소를 포함해야하며 optind는 2로 증가해야합니다. optind의 결과 값이 argc보다 크면 누락된 옵션 인수를 나타내며 getopt()는 오류 표시를 반환합니다. getopt() 함수는 유틸리티 구문 지침 3에 포함된 옵션 문자를 지원하기 위해서만 필요합니다. getopt()의 많은 기록 구현은 다른 문자를 옵션으로 지원합니다. 허용된 확장이지만 확장을 사용하는 응용 프로그램은 이식성이 극대화되지 않습니다.

다중 바이트 옵션 문자에 대한 지원은 이러한 문자를 형식 int로 나타낼 수 있는 경우에만 가능합니다. 옵션 문자에 연관된 인수(optstring로 표시됨)가 있는 경우 getopts는 인수를 셸 변수 OPTARG에 문자열로 저장합니다. 옵션이 인수를 취하지 않거나 getopts가 인수를 기대하지만 인수를 찾지 못하는 경우 getopts는 OPTARG를 해제합니다. 많은 응용 프로그램이 그래픽이며 창 시스템에서 창 관리자에 의해 시작되지만 많은 응용 프로그램은 대화형 명령줄 셸 또는 셸 스크립트(제어 논리와 함께 명령 시퀀스) 내에서 사용하도록 설계되었습니다. 명령줄의 매력과 힘의 대부분은 명령의 출력을 파일이나 파이프를 통해 다른 명령으로 리디렉션하는 기능입니다. 예를 들어 가장 간단한 예제의 경우 인수 목록의 각 요소를 인쇄해 보겠습니다. optstring은 스크립트가 인식하는 모든 옵션 문자를 제공합니다. 예를 들어 스크립트가 -a, -f 및 -s를 인식하는 경우 optstring은 afs입니다. 옵션 문자 뒤에 인수 값 또는 값 그룹이 표시되려면 a:fs와 같이 문자 뒤에 콜론을 배치합니다. 이는 getopts가 -a 옵션이 getopt() 함수가 설명에 재진입할 필요가 없다는 것을 나타내는 양식 A 노트를 가질 것으로 예상한다는 것을 나타냅니다. #include int getopt (int argc, char * const argv[], const char *optstring); 외의 char *optarg; extern int optind, opterr, optopt; 이 함수는 GNU 스타일 검색 모드가 기본적으로 사용된다는 점을 제외하면 getopt()처럼 작동합니다. 즉, 옵션 인수와 비옵션 인수가 혼합될 수 있습니다.

getopt() 함수는 비옵션 인수가 발생하자마자 옵션 처리를 중지합니다. 프로그램에서 옵션을 사용하는 것은 명령줄에서 올바른 순서로 패스 인수를 갖는 것보다 훨씬 쉬우며 getopt을 사용하여 C에서 이를 달성하는 방법을 볼 수 있습니다. 우리가 -f 옵션을 만난 다음 getopt이 완료 된 후, 우리는 확인 : 그것은 필수 및 선택 사항인 옵션을 적용하는 당신에게 달려 있습니다. getopt 처리 옵션이 완료되면 변수를 설정한 다음 확인하여 이 작업을 수행할 수 있습니다. 예를 들어 아래 예제에서는 -f를 필수로 설정하므로 GNU getopt(와 달리) 옵션 인수 가 아닌 인수 후에는 모든 추가 인수도 비 옵션으로 간주됩니다.

follow site