コマンドラインオプションは、オプション名と値の間に等号を使用しますか?

コマンドラインオプションは、オプション名と値の間に等号を使用しますか?

kubectl例として調べました。

kubectl run --image nginx ...

そして

kubectl run --image=nginx ...

どちらも有効です。

一般に、コマンドラインプログラムの場合、オプション名と値の間に等号が許可されるか必要なのかについての規則はありますか?

ベストアンサー1

一般に、コマンドライン引数を解釈する方法の実装は、完全にプログラマの裁量に依存します。

言い換えれば、多くの場合、「長い」オプションの値(インポートなど)はオプション名と値の間(つまり)で指定されます--option_nameが、単一文字オプションの場合、フラグと値をスペースで区切るのがより一般的です。または、区切り文字をまったく使用しないでください。=--option_name=value-o value-oValue

GNU日付ユーティリティのマニュアルページの例:

  -d, --date=STRING
        display time described by STRING, not 'now'
  -f, --file=DATEFILE
        like --date; once for each line of DATEFILE

-d見てわかるように、「短い」形式(例:)を使用している場合、値はオプションswitchでスペースで区切られ、「長い」形式(例:)を使用すると値=はスペースで--date区切られます。

編集する

スティーブンキットが指摘したように、GNUコーディング標準コマンドラインオプションを使用getoptして解析することをお勧めします。getopt_longマニュアルページの状態getopt_long:

--arg=param長いオプションは、または形式の引数を使用できます--arg param

したがって、この機能を使用するプログラムは両方の形式を受け入れます。

おすすめ記事