getopts
内部bash機能を利用できます。この例のようにしてみてください:
while getopts abc: name; do
echo $name, OPTARG: $OPTARG, OPTIND: $OPTIND, OPTERR: $OPTERR
done
走る:./test -ab -c file
結果:
a, OPTARG: , OPTIND: 1, OPTERR: 1
b, OPTARG: , OPTIND: 2, OPTERR: 1
c, OPTARG: file, OPTIND: 4, OPTERR: 1
変数name
は、解析された引数に設定されます。文字の後に がある場合、変数:
に配置される引数が期待されます。次に処理する引数を表示します。OPTARG
OPTIND
OPTERR
が設定されている場合、エラーが発生した場合、 bashはエラー メッセージを表示します。最初の引数が の場合、:
エラー メッセージは抑制されます。
走る:./test -d
結果:
./test: illegal option -- d
?, OPTARG: , OPTIND: 2, OPTERR: 1
または./test -c
(-c
追加の引数が必要です)
結果:
./test: option requires an argument -- c
?, OPTARG: , OPTIND: 2, OPTERR: 1
したがって、それが悪いオプションであるname
かどうかをテストできます。?