BASH getopts 문제

BASH getopts 문제

왜 아무것도 하지 않는지 아는 사람이 있나요?

moznostm=
moznostl=
moznosta=
moznostb=
while getopts ":m:l:b:a:h:" OPTION
do
case $OPTION in
m)
moznostm=$OPTARG
echo "bol zadany argument $moznost"
;;
l)
moznostl=$OPTARG
echo bol zadany argument $OPTARG
;;
b)
moznostb=$OPTARG
echo bol zadany argument $OPTARG
;;
a)
moznosta=$OPTARG
echo bol zadany argument $OPTARG
;;
h)
echo prazny
;;
esac
done

답변1

옵션 및 옵션 인수를 사용하여 스크립트를 호출해야 합니다. 예를 들어:

bash yourscript -l argumentfor_l

또한 moznost인쇄되지만 정의되지는 않습니다.

답변2

몇 가지만 수정하면 됩니다.

1) Shebang을 설정하세요! #!/bin/bash 배쉬를 쓴다면

2) 이전에 getopts를 사용한 경우 재설정

3) m에 잊어버렸습니다 $moznost.

4) 일반 변수명에는 대문자를 사용하지 않는다.

5) 따옴표를 더 자주 사용하십시오. " "변수를 확장할 때 큰따옴표를 사용하세요.
6) 을 사용합니다 shift.

7) 여기처럼 변수를 정의/초기화할 필요는 없습니다 moznostm=.

#!/bin/bash

OPTIND=1

    moznostm=
    moznostl=
    moznosta=
    moznostb=
    while getopts "mlbah:" opt
    do
    case "$opt" in
    m)
    moznostm=$OPTARG
    echo "bol zadany argument $moznostm"
    ;;
    l)
    moznostl=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    b)
    moznostb=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    a)
    moznosta=$OPTARG
    echo "bol zadany argument $OPTARG"
    ;;
    h)
    echo "prazny"
    ;;
    esac
    done
shift "$((OPTIND-1))"

스크립트를 실행합니다.

chmod +x scriptname && ./scripname -m

관련 정보