對改變參數和選項的含義感到困惑,是否有官方標准定義?
在理解關於命令語法的選項和參數是什麼時,我遇到了一個令人困惑的變化。
例如,我遇到瞭如下定義:
command -a -b -c d e f
之間有些不同
-a -b -c
,將它們稱為選項或開關,d e f
並將它們稱為參數。
command -a -b -c d e f
有些,例如
bash
手冊,呼叫所有-a -b -c d e f
參數並解釋,它們都可以$1 $2 $3 $4 $5 $6
分別從腳本訪問。
command -a b=c
有些人呼叫
-a
選項、b
參數和c
值,但其他人像前兩點一樣將它們混合在一起,以一種方式呼叫所有-a b c
參數。這三個版本只是眾多不同呼叫變體的範例,我什至不知道如何將它們全部列出,但我注意到肯定沒有固定的命名約定。
或者至少,我知道沒有標準化的命名約定,因為我遇到了不同的隨機來源,但即使在官方 Linux 和 GNU 附屬站點或手冊中,我也可能遇到這種不一致。
有沒有我可以參考的毫無疑問的官方命名方案?
utility_name [-a] [-b] [-c option_argument] [-d|-e] [-f[option_argument]] [operand...]
範例中的實用程序名為
utility_name
. 後面是options、option-arguments和operands。由
-
字元和單個字母或數字組成的參數,例如a
,被稱為選項(或者,歷史上,標誌)。某些選項後跟一個option-argument,如 所示[-c option_argument]
。最後一個選項和選項參數之後的參數被命名為操作數。該標準還將“參數”定義為
在 shell 命令語言中,傳遞給實用程序的參數相當於由其中一個函式
argv
創建的數組中的單個字元串。exec
參數是命令名稱後面的選項、選項參數或操作數之一。
utility_name
命令行上的所有內容都是實用程序的參數,如果它是 shell 腳本,它們都顯示在*位置參數中。*術語選項、選項參數和操作數是命令行上這些參數的更具體的名稱。“標誌”和“開關”是“選項”的常見同義詞。
如果是
utility -a b=c
-a
並且b=c
是論據,-a
如果實用程序辨識它是一個選項(ln
實用程序沒有-x
選項,所以嚴格來說-x
不是一個選項ln
,並且ln -x
會觸發診斷消息),b=c
如果選項帶有參數,則為選項-a
參數,否則為操作數,b
並且c
本身不是選項、選項參數,也不是操作數。正如您從我上面的文字中註意到的那樣,從實用程序的概要(由實用程序的手冊中給出)工作會比嘗試解碼在命令行上鍵入的通用命令更容易。該手冊將明確說明哪些選項需要選項參數以及哪些參數是操作數等。
恕我直言,呼叫
c
“價值”是完全可以的。c
這不是一個標準化的東西,但如果你說“是賦予”的價值b
,很少有人會誤解你。從所討論的實用程序的上下文中可以清楚地看到。例如
$ awk -v var="d" '...' data.in
任何知道的人
awk
都會說這-v var="d"
意味著“在命令行上為awk
變數var
分配了值d
”。