bash getopts는 어떤 매개변수가 호출되는지 어떻게 알 수 있나요?

bash getopts는 어떤 매개변수가 호출되는지 어떻게 알 수 있나요?

getopts그것이 bash 함수 라면 , 제가 이해한 바에 따르면 , 함수가 계속 진행하기 위해 어떤 인수가 있는지 알 수 있도록 $@전체 인수를 전달해야 합니다. 그렇죠?getopts

제가 보기엔 필요하지 않은 것 같은데, getopts현재 범위에 어떤 매개변수가 있는지 어떻게 알 수 있나요? 다른 고급 언어처럼 이전 호출을 추적하는 방법이 있나요?

while getopts abcde opt; do
              ˄˄˄˄˄ <-- you only need to pass the argument labels here, 
                        how getopts knows what arguments I have
    case $opt in
        ...
    esac
done

답변1

getopts쉘에 내장되어 있으므로 $@직접 인용할 수 있습니다. 또한 쉘 변수 OPTARGOPTIND. (함수 내에서 getopts함수는 전역 매개변수 대신 참조됩니다. 반복 가능한(멱등성) 함수 호출을 원하는 경우 $@현지화해야 합니다.)OPTIND

개요(초록)는 다음과 같습니다.

getopts optstring name [arg ...]

그리고 설명은 이렇습니다.

getopts 위치 매개변수를 구문 분석하기 위해 쉘 프로그램에서 사용됩니다. optstring인식할 옵션 문자를 포함합니다. 문자 뒤에 콜론이 오면 옵션에는 인수가 있어야 하며 공백으로 구분해야 합니다.

(적어도) bash문서 ( man bash)에는 다음과 같이 명시되어 있습니다.

getopts위치 인수는 일반적으로 구문 분석되지만, 더 많은 인수가 arg 값으로 제공되면 getopts해당 인수가 구문 분석됩니다.

인용하다

관련 정보