Arguments

如何區分位置參數和選項?

  • December 18, 2019

位置參數($1$2等)和選項(和/或參數)都直接寫在命令之後,那麼解釋如何區分它們的定義或措辭是什麼?

換句話說,如何正式解釋位置參數選項(和/或參數)之間的區別?

選項(通常也稱為“標誌”或“開關”)是一種類型的命令行參數。命令行參數是出現在實用程序或 shell 函式的命令行上的單個單詞(或帶引號的字元串)。

在呼叫帶有一定數量參數的 shell 腳本或 shell 函式時,每個單獨的參數都可以作為腳本或函式中的位置參數使用。

術語:

“論據”可以是

  • 一個“選項”(如-a,但僅當實用程序將其辨識為選項時),
  • 一個“選項參數”(比如iffoo是一個帶參數的選項),或者-a foo``-a
  • “操作數”(也不是選項參數的非選項參數,例如foo-a fooif-a採用選項參數)。

以上所有內容的真實範例(使用 GNU mv):

mv -t targetdir -f file1 file2
  • 參數:-t, targetdir, -f, file1, 和file2
  • 選項:-t-f
  • 選項參數:targetdir
  • 操作數:file1file2

POSIX 定義

$$ An argument is, in $$shell 命令語言,傳遞給實用程序的參數,相當於由 exec 函式之一創建的 argv 數組中的單個字元串。參數是命令名稱後面的選項、選項參數或操作數之一。 $$ An option is an $$命令的參數,該命令通常用於指定實用程序預設行為的更改。 $$ An option-argument is a $$某些選項後面的參數。在某些情況下,選項參數包含在與選項相同的參數字元串中 - 在大多數情況下,它是下一個參數。 $$ An operand is an $$命令的參數,該命令通常用作向實用程序提供完成其處理所需的資訊的對象。操作數通常遵循命令行中的選項。

The positional parameters in a shell script or shell function will be the arguments given on the script’s or function’s command line, regardless of whether the arguments are options, option-arguments or operands.

The positional parameters may also be set using

set -- something "something else" bumblebees

This sets $1, $2 and $3 to the three strings and clears any other positional parameters.

In this case, the positional parameters no longer have any relation to the arguments passed on the utility’s command line.

See also:

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