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 라인 셸 또는 셸 스크립트 내에서(제어 논리와 함께 명령 시퀀스)

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies