BROKER SEGUR - Rio Ulla 7 , Madrid

optind 예제

가장 간단한 예제를 들어 인수 목록의 각 요소를 인쇄해 보겠습니다. 이 문제를 동기를 부여하기 위해 개인 점 파일에서 적응 된 예제가 있습니다. 먼저 소스 셸을 기본 으로 감싸는 소스 파일이라는 함수를 정의합니다. 단순하기 위해 소스 파일에 대한 전체 코드를 제공하지는 않지만 나머지 함수는 -v 플래그가 전달 될 때 자세한 오류 / 통지 메시지를 인쇄합니다. 이 패턴을 권장 하는 사람들의 몇 가지 예를 발견, 예를 들어이 재귀 getopts 예제에서. 이 작업이 작동할 수도 있지만 OPTIND를 로컬 변수로 선언할 수 있는 더 좋은 방법이 있습니다. 위의 예제에서는 다음과 같은 함수를 조정합니다: optstring은 합법적인 옵션 문자를 포함하는 문자열입니다. 이러한 문자 뒤에 콜론이 있는 경우 이 옵션에는 인수가 필요하므로 getopt()는 동일한 argv 요소 또는 optarg에 다음 argv 요소의 텍스트에 대한 포인터를 배치합니다. 두 개의 콜론은 옵션 아르그가 선택적인 것을 의미합니다. 현재 argv 요소에 텍스트가 있는 경우(예: 옵션 이름 자체와 동일한 단어(예: «-oarg»)에서 텍스트가 있는 경우 optarg로 반환되고 그렇지 않으면 optarg가 0으로 설정됩니다. 이것은 GNU 확장입니다.

optstring에 세미콜론 다음에 W가 포함된 경우 -W foo는 긴 옵션–foo로 처리됩니다. (-W 옵션은 구현 확장을 위해 POSIX.2에서 예약합니다.) 이 동작은 GNU 확장이며 glibc 2 이전 라이브러리에서는 사용할 수 없습니다. 이 예제에서는 플래그 -h 및 -x를 허용 하고 인수와 옵션 -f를 받아들이는 스크립트가 있습니다. 스크립트는 위치 인수의 수를 가지고 있습니다. 위치 인수에 액세스하려면 $@(OPTIND-1))»을 시프트(OPTIND-1)»라고 부르며, 이는 $@ 등은 옵션 인수가 아닌 위치 인수를 참조하도록 합니다. 이것은 꽤 표준 물건, 거의 모든 getopts 자습서에서 찾을 거 야. 이것은 실제로 사실이 아닙니다. 순열은 예제에서 볼 수 있듯이 마지막 옵션을 검색한 후에 발생합니다. 그러나 효과는 동일합니다.

argv는 비옵션이 끝에 있도록 변기되고 옵트인드는 첫 번째 비옵션을 인덱싱하도록 수정됩니다. 필수 옵션과 선택 사항인 옵션을 적용하는 것은 귀하에게 달려 있습니다. getopt 처리 옵션이 완료되면 변수를 설정한 다음 확인하여 이 작업을 수행할 수 있습니다. 예를 들어 아래 예제에서는 -f를 필수로 설정하기 때문에 이전 예제의 문제는 OPTIND가 전역 변수라는 것입니다. sourceall 호출 getopts 후, OPTIND의 값은 최종 옵션 인덱스를 반영 하도록 업데이트 됩니다. 메서드의 나중에 sourceall 소스 파일을 호출할 때 OPTIND의 값은 여전히 sourceall의 초기 getopts 호출에서 설정 됩니다. 이렇게 하면 소스 파일에서 getopts 호출이 잘못된 위치에서 시작됩니다! argc 및 argv 매개 변수를 직접 사용하는 것만으로도 간단한 작업을 수행할 수 있습니다. 예를 들어 두 개의 파일 이름(예: 복사 명령)을 포함하는 명령을 작성한다고 가정합니다.

사용자가 명령줄에 더 이상 두 개 이상의 이름을 입력하지 않도록 하기 위해, 우리는 단순히 확인 : 많은 응용 프로그램이 그래픽이며 윈도우 시스템의 창 관리자에 의해 시작되는 동안, 응용 프로그램의 큰 숫자는 대화 형 c를 통해 사용하도록 설계되었습니다 ommand 라인 셸 또는 셸 스크립트 내에서(제어 논리와 함께 명령 시퀀스)