オプションの終わりに達するとgetoptsはどうなりますか?

オプションの終わりに達するとgetoptsはどうなりますか?

Bashのマニュアルによると

getopts optstring name [args]

オプションの終わりに達すると終了し、getopts0より大きい値を返します。OPTINDオプションではなく、最初の引数のインデックスに設定し、にname設定します?

一例ではBashハッカーgetoptswikiチュートリアル:

while getopts ":a" opt; do
  case $opt in
    a)
      echo "-a was triggered!" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

オプションの終わりに達すると終了し、getopts0より大きい値を返すため、whileループは停止します。それでは、whileループの内部では内部部分\?)に到達したことがないということですか?それではなぜそこにいるのですか?

ありがとうございます。

ベストアンサー1

無効なオプションを処理するために使用されます。この例ではscript -aこの-aオプションが予想され、-a実行すると「Fired!」が発生します。を実行すると、script -b無効-bなオプションがケースによって処理され、\?「無効なオプション-b:」が発生します。

おすすめ記事