함수에서 bash getopts 호출이 두 번째로 실패합니다.

함수에서 bash getopts 호출이 두 번째로 실패합니다.

나는 이 함수를 내부적으로 function사용하여 bash에 전달된 인수를 구문 분석하려고 합니다. getopts함수가 처음 호출될 때 작동하지만 이후의 모든 호출에서는 실패합니다.

다음은 간단한 테스트 사례입니다.

#!/bin/bash

function getopt_test {
    PARAMS=""
    while getopts "a:" opt; do
        case $opt in
            a)
                PARAMS="${PARAMS} $OPTARG"
                ;;
        esac
    done
    echo "PARAMS => $PARAMS"
}

getopt_test -a call_1
getopt_test -a call_2

스크립트의 출력은 다음과 같습니다.

~$ ./tst.sh
PARAMS =>  call_1
PARAMS =>               <--- missing 'call_2'
~$ 

두 번째 호출 전에 어떻게든 재설정해야 할 것 같은데 getopts어떻게 해야 하는지 잘 모르겠습니다. 어떤 아이디어가 있나요?

답변1

대답은 getopts포인터를 유지하는 것이므로 함수의 시작 부분에 또는 를 추가하는 $OPTIND것이 요령입니다 .local OPTINDOPTIND=1getopt_test

링크를 제공해 주신 @sivann에게 감사드립니다.getopts가 연속으로 두 번 호출되지 않습니까?스택오버플로우에서

관련 정보