파일에서 다른 함수만 호출할 때 getopts 기능을 사용하는 방법

파일에서 다른 함수만 호출할 때 getopts 기능을 사용하는 방법

내 함수에 대한 매개변수 이름을 지정하고 싶습니다.

명령줄에서 호출된 기본 함수에만 GETOPTS를 사용하는 것 같습니다.

파일에 여러 함수가 있는 경우 다른 함수를 호출할 때 동일한 유형의 기능(이름이 지정된 매개변수)을 얻을 수 있는 방법이 있습니까?

예를 들어 다음은 작동하지 않는 것 같습니다.

$ cat getops_example.sh 
function usage {
  echo 'here'
}

function my_test {
while getopts ":s:p:" o; do
    case "${o}" in
        s)
            s=${OPTARG}
            ((s == 45 || s == 90)) || usage
            ;;
        p)
            p=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done
}
my_test 11 20
echo "s was $s"
echo "p was $p"
$

$ ./getops_example.sh -s 10 -p 20
s was 
p was 

답변1

프로그램에 매개변수를 전달했지만 프로그램 내에서 my_test옵션 플래그 -s-p해당 옵션 없이 함수를 호출하기 때문에 프로그램을 실행할 수 없습니다. 실제 필요에 따라 사용하십시오.

my_test -s 11 -p 20

또는 외부에서 매개변수를 전달하고 함수를 호출하세요.

my_test "$@"

관련 정보