짧은 옵션과 긴 옵션을 구문 분석하는 스크립트(라고 부르겠습니다 scriptC
) 가 있는데 getopt
잘 작동합니다.
스크립트는 다음과 같이 호출됩니다.
scriptA
올바른 매개변수를 사용 하여 실행하고 scriptB
호출합니다 .scriptC
scriptA
질문: 실제 매개변수와 동일한 매개변수를 전달한 후 에 전달할 수 있습니까 scriptC
? 이러한 스크립트 는 다음
과 같이 호출됩니다.
scriptB "$@"
scriptB
scriptC —param1 —param2
답변1
scriptA
이렇게 호출 하면scriptB
scriptB "$@"
그런 다음 호출 전에 이러한 인수가 변경되지 않은 경우 호출에 사용된 명령줄 인수가 scriptA
전달됩니다 .scriptB
scriptB
에서 으로의 통화도 마찬가지입니다 scriptC
.
내용 (또는 개별 위치 인수 등 ) 을 해석, 변경 또는 변경하려고 시도 scriptA
하지 않는 한 명령줄 인수는 구문 분석을 위해 전달됩니다 .scriptB
$@
$1
$2
$3
scriptC
getopt
스크립트 대신 함수를 사용하는 예(동일한 방식으로 작동):
#!/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
매개변수를 사용하거나 해석합니다.getopt
getopts