105.2標準
Bashスクリプトで-n NAMEと-vを解析し、-nが引数を必要とすることを指定する。
適切なgetopts呼出しはどれか。
× 不正解
getoptsのoptstringでは文字直後の:が、そのオプションに引数が必要であることを示す。解析結果は指定変数、引数値はOPTARGへ入る。
詳細解説
正しい
getopts "n:v" optnの後のコロンが引数必須を示し、vは引数なしで解析する。
正しい。n直後の:が-nに引数を要求し、v直後には:がないため-vをフラグとして解析する。
誤り
getopts "nv:" optコロンがvに付き、-vが引数必須になる。
誤り。コロンは直前の文字へ作用するため、この並びでは-nではなく-vが引数必須になる。
誤り
getopt "n:v"外部getoptの呼出しであり、設問のBash組込みgetoptsと変数optの形ではない。
誤り。getoptは別のユーティリティであり、Bash組込みgetoptsがOPTARG等を更新する設問の呼出形式ではない。
誤り
getopts "-n NAME -v" optoptstringへ利用時の空白区切り表記をそのまま書く構文ではない。
誤り。optstringはオプション文字と引数要否を連続して記述し、空白やNAMEという説明用語を含めない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'while getopts "n:v" opt; do printf "%s:%s\n" "$opt" "${OPTARG-}"; done' demo -n alice -v期待される結果
n:aliceの後にv:理解のポイント
- optstringは短いオプション列
- :は引数必須
- 値はOPTARG
確認時の注意
- 確認環境: GNU Bash 5.2 / Bash組込みgetopts
基礎のおさらい
OPTIND
getoptsが次に処理する位置を保持し、解析後はshift "$((OPTIND - 1))"で通常引数へ進められる。
不正オプション
optstring先頭の:やOPTERRの設定により、欠落引数や未知オプションのエラー処理方法を調整できる。
問題IDKP-105-633
確認環境GNU Bash 5.2 / Bash組込みgetopts
最終技術確認2026-08-13
誤り・権利侵害を報告