フラグとコマンドパラメータを分離します。

フラグとコマンドパラメータを分離します。

次のフラグとパラメータを含むコマンドがあるとします。

mycommand --foo bar arg1 arg2

fooこのフラグの値はです"bar"。)

しかし、foo引数なしでフラグを提供するオプションがあるとしたらどうでしょうか。

mycommand --foo arg1 arg2

arg1値がフラグとして扱われないようにするにはfoo

ベストアンサー1

Unixでコマンドラインフラグを残りの引数と区別する最も一般的なイディオムは、二重ダッシュ(--)を使用することです。

ユーティリティがCライブラリ機能をgetopt()(直接または間接的に)使用している場合、デュアルダッシュはコマンドラインオプションの終わりを示し、getopt()コマンドライン解析を終了します。

これはから来たものですgetopt(3)手動OpenBSDから:

引数リストのオプション解釈は、「--」(二重ダッシュ)オプションを使用して抑制できます。これはgetopt()が引数処理終了信号を送り、-1を返すようにします。

そのため、名前付きファイルを削除する正しい方法は次のとおり-fです。

$ rm -- -f

例えば。

getoptsシェルはこのライブラリ関数を呼び出して組み込みコマンドを実装する可能性が高いです。

getoptsIMHO、シェルスクリプトとgetopt()Cプログラムでこれを使用する方法を知っておくとよいでしょう。あまり難しくなく、プロジェクトのコマンドライン解析コードを書くと、作業がはるかに簡単になります。

getopt_long()一部のCライブラリは、--option=value「長いオプション」()を解析する機能も提供しています。しかし、これは拡張です(愚かな意図ではありません)。

おすすめ記事