Bash 매뉴얼에 따르면
getopts optstring name [args]
옵션의 끝에 도달하면
getopts
종료하고 0보다 큰 값을 반환합니다.OPTIND
옵션이 아닌 첫 번째 인수의 인덱스로 설정하고name
로 설정합니다?
.
한 예에서는Bash 해커 위키 getopts
튜토리얼:
while getopts ":a" opt; do
case $opt in
a)
echo "-a was triggered!" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
옵션의 끝에 도달하면 getopts
종료되고 0보다 큰 값을 반환하므로 while 루프가 중지됩니다. 그렇다면 while 루프 내부에서는 내부 부분 \?)
에 도달한 적이 없다는 것인가요 ? 그렇다면 왜 거기에 있습니까?
감사해요.
답변1
잘못된 옵션을 처리하는 데 사용됩니다. 예제에서는 script -a
이 -a
옵션이 예상되며 -a
실행하면 "Fired!"가 발생합니다. 을 실행하면 script -b
유효 하지 -b
않은 옵션이 케이스에 의해 처리되어 \?
"잘못된 옵션: -b
"이 발생합니다.