getopt를 사용하지 않는 스크립트에 getopt 인수 전달

getopt를 사용하지 않는 스크립트에 getopt 인수 전달

짧은 옵션과 긴 옵션을 구문 분석하는 스크립트(라고 부르겠습니다 scriptC) 가 있는데 getopt잘 작동합니다.

스크립트는 다음과 같이 호출됩니다.
scriptA올바른 매개변수를 사용 하여 실행하고 scriptB호출합니다 .scriptC

scriptA질문: 실제 매개변수와 동일한 매개변수를 전달한 후 에 전달할 수 있습니까 scriptC? 이러한 스크립트 는 다음
과 같이 호출됩니다.
scriptB "$@"scriptBscriptC —param1 —param2

답변1

scriptA이렇게 호출 하면scriptB

scriptB "$@"

그런 다음 호출 전에 이러한 인수가 변경되지 않은 경우 호출에 사용된 명령줄 인수가 scriptA전달됩니다 .scriptB

scriptB에서 으로의 통화도 마찬가지입니다 scriptC.

내용 (또는 개별 위치 인수 등 ) 을 해석, 변경 또는 변경하려고 시도 scriptA하지 않는 한 명령줄 인수는 구문 분석을 위해 전달됩니다 .scriptB$@$1$2$3scriptCgetopt


스크립트 대신 함수를 사용하는 예(동일한 방식으로 작동):

#!/bin/sh

scriptC () {
    printf 'Arg: %s\n' "$@"
}

scriptB () {
    scriptC "$@"
}

scriptA () {
    scriptB "$@"
}

scriptA -param1 -param2

그러면 출력이 생성됩니다.

Arg: -param1
Arg: -param2

전화하다

scriptA "hello world" --param1 /etc/passwd --param2

생산할 것이다

Arg: hello world
Arg: --param1
Arg: /etc/passwd
Arg: --param2

즉, 매개변수가 수정 없이 에 전달됩니다 scriptC. 그런 다음 scriptC매개변수를 사용하거나 해석합니다.getoptgetopts

관련 정보