왜 아무것도 하지 않는지 아는 사람이 있나요?
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