옵션 끝에 도달하면 getopts는 어떻게 되나요?

옵션 끝에 도달하면 getopts는 어떻게 되나요?

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"이 발생합니다.

관련 정보