位置パラメータとは

位置パラメータは、コマンドラインで指定された引数で、現在のプロセスをシェルで起動するために使用されます。 位置パラメータ値は、シェルによって管理される特別な変数セットに格納されます。

位置パラメータを格納する変数

位置パラメータを使用するシェルの典型的な例はbashです。 Linux、BSD、macOS X、およびWindows 10でbashを使用できます。

次のbashコマンドを考えてください。 コマンド名はmycommandです。 コマンドラインには3つのパラメータがあります。1、2、3、4です。

 mycommand one two "three four" 

ヒント:位置パラメータはスペースで区切られています。 シェルはスペースの後のものを個々のパラメーターとして解釈します。 パラメーター自体にスペースが含まれている場合は、上記の「3 4」のように、それを引用符で囲みます。

mycommandが実行されている間、bashはそれに次のシェル変数を提供します。

変数名
$ 0mycommand
1ドル1
2ドル
3ドル3 4
$#3
[メール保護]一二三四
$ *一二三四

変数$ 0は、コマンドの最初の単語 - コマンド名に設定されます。 この変数は、コマンドの名前を変更したり、シンボリックリンクを使用して実行したりできるので便利です。 プログラムを実行するために使用されるコマンド名に応じて動作が異なるプログラムもあります。 $ 0を指定すると、プログラムは起動したコマンド名を確認できます。

変数$ 1$ 2 、および$ 3には、それぞれ1番目、2番目、および3番目のパラメーターの値が含まれています。 4番目のパラメータがある場合、その値は変数$ 4に配置されます。 9を超えるパラメータには、数字を中括弧で囲むことでアクセスできます。 例えば、 $ {10}は10番目のパラメーターで、 $ {123}は123番目です。

変数$#は、$ 0を除く位置パラメータの数を含みます。

変数[email protected]には、$ 0を除くすべての定位置パラメーターの値が含まれています。

二重引用符で囲まれている場合を除き、変数$ *[email protected]と同じです。 二重引用符で囲むと、 $ *$ 1c $ 2c $ 3c ...に展開されます。ここで、 c$ IFSの最初の文字、bashの内部フィールドセパレータ変数です。 IFSは単語分割に使用され、そのデフォルト値は "スペース、タブ、または改行"です - これはbashがある単語の終わりと次の単語の始まりを見る場所です。

$ IFSの値が " _ "(アンダースコア)の場合、 "[email protected]"は次のように展開されます。

 一二三四 

「$ *」は次のように展開されます。

 一二三四 

以下はbashで位置パラメータを使う例です。

set組み込みコマンドを使用して、 [email protected]の値を現在のシェルに合わせて変更できます。 設定後のすべて-位置パラメータとして登録されます。

 セット - 1 2 2 "3 4" 

これで、for ... inを使用てこれらの変数を反復処理できます。

 [email protected]にargがあります。 echo "$ arg"を行います。 終わった 
 一二三四 

bashでは、 [email protected]は実行時に繰り返すデフォルトのリストなので、このコマンドも機能します。

 argのために。 echo "$ arg"を行います。 終わった 
 一二三四 

(二重引用符で) "$ *"を反復すると、 $ IFSの最初の文字と連結した位置パラメーターの連結ストリングが提供されます。

 IFS = "、"; "$ *"のargに対して。 echo "$ arg"を行います。 終わった 
 一二三四 

詳しくは、bashコマンド・シェルの資料を参照してください。

パラメータ、プログラミング用語