Command-Line

命令行選項是否在選項名稱和值之間使用等號?

  • January 25, 2022

kubectl作為一個例子,我注意到

kubectl run --image nginx ...

kubectl run --image=nginx ...

兩者都有效。

對於一般的命令行程序,是否有關於選項名稱和值之間是否允許/需要等號的規則?

通常,如何解釋命令行參數的實現完全由程序員自行決定。

也就是說,在許多情況下,“長”選項的值(例如用 引入)在選項名稱和值(即)之間--option_name指定一個flag 和 value 帶有空格,例如, 或根本不使用分隔符(如)。=``--option_name=value``-o value``-oValue

GNU date 實用程序手冊頁中的一個範例:

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

如您所見,當使用“短”形式(即-d)時,該值將與選項開關用空格隔開,但=在使用“長”形式(即--date)時,則由一個空格隔開。

編輯

正如 Stephen Kitt 所指出的,GNU 編碼標準推薦使用 getoptgetopt_long解析命令行選項。狀態的手冊頁getopt_long

長選項可以採用形式為--arg=param或的參數--arg param

因此,使用該函式的程序將接受這兩種形式。

引用自:https://unix.stackexchange.com/questions/573377