「オプション」、「引数」、および「パラメーター」という用語の違いは何ですか?マニュアルページでは、これらの用語はしばしば同じ意味で使用されているようです。
commandはargumentsという名前の文字列の配列に分割されます。引数0は(通常)コマンド名、引数1、コマンドに続く最初の要素などです。
$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp
オプションは、argumentの文書化されたタイプであり、コマンドの動作を変更します、たとえば-l
は一般的に「長い」、-v
冗長を意味します。 -lv
は、twoオプションをsingle引数に組み合わせたものです。 --verbose
のような長いオプションもあります。名前が示すように、オプションは通常オプションです。しかし、逆説的な「必須オプション」を持つコマンドがいくつかあります。
$ ls -la /tmp /var/tmp
option1= -l
option2= -a
パラメータは、commandまたはそののいずれかに情報を提供する引数です。 options、たとえば-o file
では、fileは-o
オプションのパラメーターです。可能な値がプログラムにハードコードされているオプションとは異なり、パラメーターは通常そうではないため、ユーザーは自分のニーズに合った文字列を自由に使用できます。オプションのように見えてもそのように解釈されるべきではないパラメーターを渡す必要がある場合は、コマンドラインの先頭から二重ダッシュ--
で区切ることができます。
$ ls -la /tmp /var/tmp
parameter1= /tmp
parameter2= /var/tmp
$ ls -l -- -a
option1 = -l
parameter1 = -a
最後に、サブコマンドがあります。これは、関数/(低レベル)コマンドとも呼ばれ、busybox
、git
、apt-get
、openssl
など。それらを使用すると、サブコマンドの前にグローバルオプションがあり、サブコマンドに続くサブコマンド固有のオプションがある場合があります。パラメーターとは異なり、可能なサブコマンドのリストはコマンド自体にハードコーディングされています。例えば。:
$ busybox ls -l
command = busybox
subcommand = ls
subcommand option1 = -l
$ git --git-dir=a.git --work-tree=b -C c status -s
command = git
command option1 = --git-dir=a.git
command option2 = --work-tree=b
command option3 = -C
subcommand = status
subcommand option1 = -s
test
、tar
、dd
、およびfind
などの一部のコマンドは、前述の構文よりも複雑な引数解析構文を持ち、一部またはすべてを含むことができます。 expressions
、operands
、keys
および同様のコマンド固有のコンポーネントとして解析された引数。
典型的なUnixコマンドのman
ページでは、用語argument
、option
、およびparameter
をよく使用します。最下位レベルにはargument
があり、すべてはコマンド(ファイルシステムへのパス)自体を含む引数です。
シェルスクリプトでは、特殊変数_$0
_ .. _$n
_を使用して引数にアクセスします。他の言語にも同様の方法でアクセスできます(通常、argv
などの名前の配列を使用します)。
必要に応じて、引数はoptionsとして解釈されます。これを行う方法は実装固有です。たとえば、シェル(bash
など)が提供するgetopts
またはgetopt
コマンドを使用できるように、独自のロールを作成できます。
これらは通常、optionをハイフン(_-
_)で始まる引数として定義します。一部のオプションでは、パラメータとして進行中の引数を使用できます。より高性能なパーサー(例:getopt
)は、短形式(_-h
_)と長形式(_--help
_)オプションの混合をサポートします。
通常、ほとんどのオプションはゼロまたは1つのパラメーターを取ります。このようなパラメーターは、valuesと呼ばれることもあります。
サポートされているオプションは、プログラムコードでコーディングされています(たとえば、シェルスクリプト内のgetopts
の呼び出しで)。オプションが消費された後の残りの引数は、指定された順序が重要な場合に位置パラメーターと呼ばれます(これは、通常、任意の順序で指定できます)。
繰り返しになりますが、スクリプトは、位置パラメータをどのように消費して使用するかによって定義します。
だから典型的なコマンド
_$ ls -I README -l foo 'bar car' baz
_
7つの引数:_/usr/bin/ls
_、_-I
_、README
、_-l
_、foo
、_bar car
_、およびbaz
は_$0
_スルー_$6
_。 _-l
_および_-I
_はoptionsとして解釈され、後者はparameter(またはvalue)README
。残っているのは、位置パラメータ(foo
、_bar car
_、およびbaz
)です。
オプションの解析は、消費する引数を削除することで引数リストを変更する場合があります(たとえば、shift
またはset
を使用)。位置パラメーターのみが残り、その後_$1
_ .. _$n
_。