BASH getopts OPTARG 정의되지 않음

BASH getopts OPTARG 정의되지 않음

이 코드가 있고 명령줄에서 호출하면 각 옵션의 옵션/에코에 에코가 표시되지만 $OPTARG는 정의되지 않았습니다. 이유는 모르겠습니다.

   OPTIND=1
    optm=
    optl=
    while getopts "ml:" opt
    do
    case "$opt" in
    m)
    optm=$OPTARG
    echo "m was triggered"
    ;;
    l)
    moznostl=$OPTARG
echo "l was triggered"
    ;;
   esac
   done
   shift "$((OPTIND-1))"

두 번째 질문은 다음과 같습니다. OPTIND=2 두 번째 매개변수로 시작하는 데 사용할 수 있습니까? 내 말은 그것이 효과가 있다는 뜻이지만, 더 나아가 이것은 합법적인 방법입니다. 예를 들어:

./project first -l second 

따라서 첫 번째 인수를 건너뛰고 -l?로 시작합니다.

답변1

이 줄이 있어요

while getopts "ml:" opt

m이는 인수 없이 존재할 수 있으며 l하나의 인수만 취할 수 있음 을 쉘에 알려줍니다 .

.getopts 'm:l' opt

관련 정보