1. ホーム
  2. bash

[解決済み] 用語の違い。「オプション"、"引数"、"パラメータ"?

2023-04-08 06:08:53

質問

オプション」、「引数」、「パラメータ」という用語は、それぞれどのような違いがありますか。 man ページでは、これらの用語はしばしば互換的に使用されているようです。

どのように解決するのですか?

A コマンド という文字列の配列に分割されます。 引数 . 引数0は(通常)コマンド名、引数1はコマンドに続く最初の要素、そして以下となります。これらの引数は時々 位置パラメーター .

$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

オプション は、文書化された 引数 の挙動を変更する コマンド は、例えば -l は一般に "long" を意味します。 -v 冗長な。 -lv のオプションが組み合わされ シングル 引数で指定します。 また 長いオプション のように --verbose (参照 getopts を使って長いコマンドラインオプションと短いコマンドラインオプションを処理する。 ). その名前が示すように、オプションは通常任意です。しかし、中には逆説的な「必須オプション」を持つコマンドもあります。

$ ls -la /tmp /var/tmp
option1= -l
option2= -a

A パラメータ は引数であり、その情報は コマンド またはその オプション で、例えば -o file , ファイル のパラメータは -o オプションのパラメータです。オプションと違って、パラメータはその値がプログラム中にハードコードされているため、ユーザーは自分の必要性に応じた文字列を自由に使用することができます。オプションのように見えるがそう解釈されるべきではないパラメータを渡す必要がある場合は、コマンドラインの先頭からダッシュで区切ってください。 -- .

$ ls -la /tmp /var/tmp
parameter1= /tmp
parameter2= /var/tmp

$ ls -l -- -a
option1    = -l
parameter1 = -a

A シェルパラメータ は、シェルのコンテキストで値を保存するものです。これには位置パラメーター (例えば $1 , $2 ...), 変数 (例. $foo , $bar ...) と特殊文字のもの (例. $@ )

最後に サブコマンド のように、複数の個別のコマンドを埋め込む "メタコマンド" で使用される関数/(低レベル)コマンドとも呼ばれます。 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 c
subcommand         = status
subcommand option1 = -s

のようなコマンドもあることに注意してください。 test , tar , ddfind は先に説明したものよりも複雑な引数解析構文を持っており、引数の一部または全部を expressions , operands , keys といったコマンド固有のコンポーネントがあります。

また、オプションの変数割り当てとリダイレクトは、他のコマンド ライン パラメータと同様に、チルダ展開、パラメータ展開、コマンド置換、算術展開、および引用符除去のためにシェルによって処理されるにもかかわらず、コマンドが実際に呼び出されてその引数を渡されたときに消滅しているので、私の回答では考慮されないことにも注意してください。