Bashのマニュアルによると
getopts optstring name [args]
オプションの終わりに達すると終了し、
getopts
0より大きい値を返します。OPTIND
オプションではなく、最初の引数のインデックスに設定し、にname
設定します?
。
一例ではBashハッカーgetopts
wikiチュートリアル:
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
:」が発生します。