】コマンド——bashのシェルスクリプト内でオプションを解析する本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、bashのシェルスクリプト内でオプションを解析する「getopts」コマンドです。});この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、bashのシェルスクリプト内でオプションを解析する「getopts」コマンドです。実行例オプションを解析するエラーメッセージを表示しない引数付きのオプションを使用するgetoptsコマンドとは?「getopts」は、bashのシェルスクリプト内でオプションを解析する際に役立つコマンドです。自作のシェルスクリプトで「-a」のような「ハイフン+アルファベット1文字」のオプションを扱う際に便利です。ファイル名」のように引数を取るオプションも解析できます。getoptsコマンドはbashのビルトインコマンド(内部コマンド、シェルコマンド)です。bash」で詳細を確認します。シェルスクリプトのオプションを解析する他の方法もあります。getoptsとよく似た名前で用途も同じ「getopt」コマンド(/usr/bin/getopt)があります。getoptコマンドはgetoptsとは異なり、「--」から始まるロングオプションも扱うことができます(連載第379回)。この他、引数を1つずらす「shift」コマンドを使ってオプションを解析することも可能です。]は省略可能な引数を示しています。目次に戻るgetoptsの主なオプションgetoptsにはオプションはありません。オプション文字列の先頭に「:」記号を入れるかどうかによって、エラーメッセージ表示の有無を変更できます(本文を参照)。目次に戻るオプションを解析するgetoptsでオプションを処理する際には、一般に「while文」と「case文」を組み合わせて使用します(※1)。opt1.shにあるwhile文については「シェルスクリプトに挑戦しよう(14)」を参照。case文については「シェルスクリプトに挑戦しよう(9)」を参照。ここではスクリプト1を使って、getoptsの動作を見てみましょう。スクリプト1(opt1.sh)は、オプション「-a」「-b」「-c」を使用し、それぞれのオプションに応じてメッセージを表示します。OPT」の「abc」の部分は、利用するオプションの種類を指定しています。ここでは「-a」「-b」「-c」の3つです。続く「OPT」はgetoptsが解析した結果をセットする変数の名前で、case文で参照($OPT)しています。画面1ではopt1.shの動作を確認しています。-b」のように個別に指定できる他、「-bc」のようにまとめて指定できることが分かります。getoptsで指定していないオプションが与えられた場合は、変数OPTに「?」という文字がセットされる様子も分かります。d」のようなメッセージを表示します。OPT」のように、オプション文字列の先頭に「:」記号を入れます。スクリプト2(opt2.sh)では、先ほどのopt1.shの一部を書き換えて、独自のエラーメッセージを表示するようにしました。「OPTARG」という組み込み変数にはgetoptsが現在解析しようとしている文字列が入っています(※2)。abc以外のオプションを指定したとき、変数OPTには、解析結果である「?」という文字が入ります。getoptsコマンドでは、この他、2つの組み込み変数を利用できる。「OPTERR」はエラー出力を制御する変数で、初期値は1。値を0にすると「:」を付けたときと同様にエラー出力を抑制する。「OPTIND」は現在処理している引数の位置を表す。設定を有効にする必要があります。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。