次のプログラムのbashスクリプトを作成するときに、オプションの引数/フラグを含める方法がわかりません。
プログラムには2つの引数が必要です。
run_program --flag1 <value> --flag2 <value>
ただし、いくつかのオプションのフラグがあります。
run_program --flag1 <value> --flag2 <value> --optflag1 <value> --optflag2 <value> --optflag3 <value> --optflag4 <value> --optflag5 <value>
ユーザーの引数をとるようにbashスクリプトを実行したいと思います。ユーザーが順番に2つの引数のみを入力した場合、次のようになります。
#!/bin/sh
run_program --flag1 $1 --flag2 $2
しかし、オプションの引数のいずれかが含まれている場合はどうなりますか?そうなると思います
if [ --optflag1 "$3" ]; then
run_program --flag1 $1 --flag2 $2 --optflag1 $3
fi
しかし、$ 4が与えられ、$ 3が与えられない場合はどうでしょうか?
getopts
、各引数の組み合わせを指定する必要がありますか?3&4、3&5、3&4&5など?
getopts
。のは、私はすべての引数を指定してスクリプトを実行することをユーザーに強制するとしましょう:run_program.sh VAL VAL FALSE FALSE FALSE FALSE FALSE
としてプログラムを実行しますprogram --flag1 VAL --flag2 VAL
。実行した場合run_program.sh VAL VAL FALSE 10 FALSE FALSE FALSE
、プログラムはとして実行されprogram --flag1 VAL --flag2 VAL --optflag2 10
ます。どのようにしてそのような行動を得ることができますgetopts
か?
getopts
あなたが欲しいものです。それがなければ、オプションの有無にかかわらず、switchステートメントでループを使用して各フラグを検出できます。