Bourne シェルにおける事前定義された特殊変数

特殊な意味を持つ変数がいくつかあります。 以下の変数は、Bourne シェルによってのみ設定されます。


項目 説明
$@ $1 で始まる定位置パラメーターを展開します。 個々のパラメーターはスペースで区切られます。

二重引用符 (" ") で $@ を囲んだ場合は、シェルは、それぞれの定位置パラメーターを別個の文字列と見なします。 定位置パラメーターが存在しない場合は、Bourne シェルはこのステートメントを引用符なしのヌル文字列に展開します。

$* $1 で始まる定位置パラメーターを展開します。 シェルはそれぞれのパラメーターを IFS 変数値の先頭文字で区切ります。

二重引用符 (" ") で $* を囲んだ場合は、シェルは、定位置パラメーター値を二重引用符の中に入れます。 個々の値は、IFS 変数の先頭文字で区切られます。

$# シェルに渡される定位置パラメーターの数 (シェル・プロシージャー自体の名前はカウントしない) を指定します。 したがって、$# 変数には、設定されている最大の番号が付いている定位置パラメーターの番号が入ります。 この変数の主な用途の一つは、必要な数の引数が存在するかどうかをチェックすることです。 シェルでアクセスできるのは、$0 から $9 の定位置パラメーターだけです。
$? 最後に実行されたコマンドの終了値を指定します。 その値は 10 進の文字列です。 ほとんどのコマンドは、正常終了を示すのに 0 を戻します。 シェル自体は、その終了値として $? 変数の現行値を戻します。
$$ 現在のプロセスのプロセス番号を識別します。 プロセス番号は、すべての既存のプロセスの中で唯一のものなので、この文字列は固有な一時ファイル名を作成するのによく使用されます。
以下の例は、この目的のみに使用するディレクトリーに一時ファイルを作成する推奨例です。
temp=/tmp/$$
ls >$temp
.
.
.
rm $temp
$! & ターミネーターを使用してバックグラウンドで最後に実行されたプロセスのプロセス番号を指定します。
$- シェルに現在設定されている実行フラグの名前からなる文字列です。