이 코드가 있고 명령줄에서 호출하면 각 옵션의 옵션/에코에 에코가 표시되지만 $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