getopt - ロングオプションも解析できるオプション解析コマンド

スポンサーリンク

getoptコマンドはCのgetopt関数のような機能を持つオプション解析コマンドになります。
この記事では、util-linux版のgetoptコマンドについて紹介します。このgetoptの特徴としてスペース等の文字も引数に利用できます。
bash組み込みコマンドのgetoptsコマンドとの違いとしてロングオプションの設定も行うことができます。

スポンサーリンク

getoptコマンドの構文

getoptコマンドの構文は

のどちらかを基本的に利用します。

の構文は互換モードで出力の引数に引用符がつかないモードになります。
この場合の出力に対して、'eval set --'で位置パラメータを設定し直すときに問題が起きる場合があります。

getoptコマンドの利用

getoptコマンドは、

-oオプションでショートオプションについてのオプション文字列を指定できます。指定するオプションの後に':'付けることで引数を要求します。また、'::'をつけることで引数をオプションにすることができます(引数の有無は空文字列かそれ以外かで判断となります)。

-lオプションでロングオプションについてのオプション文字列を指定できます。オプション文字列はカンマ区切りで指定します。

-nオプションでプログラム名を指定することで解析エラー時にそのプログラムの名前を表示できます。

getoptコマンドの出力結果は標準出力になります。

getopt_demo1.sh

実行例

setコマンドで位置パラメータを設定し直すことができます。
evalコマンドは様々な問題を起こすコマンドではありますが、機能としては単純で指定した文字列をコマンドとして実行できます。

util-linux版だとスクリプトの例が/usr/share/doc/util-linux/examples/にあります。