この章では、Unixの特殊変数について詳しく説明します。前の章の1つでは、変数名に特定の英数字以外の文字を使用するときに注意する方法を説明しました。
理由として、これらの文字が特殊なUnix変数の名前で使用されているためです。これらの変数は、特定の機能用に予約されています。
例として、$文字は現在のシェルのプロセスID番号またはPIDを表します。
$echo $$
上記のコマンドは、現在のシェルのPIDを書き込みます。
29949
次の表は、シェルスクリプトで使用できるいくつかの特別な変数を示しています。
S.No. | 変数と説明 |
---|---|
1 | $ 0
現在のスクリプトのファイル名。 |
2 | $ n
これらの変数は、スクリプトが呼び出された引数に対応します。ここで、nは引数の位置に対応する正の10進数です(最初の引数は$ 1、2番目の引数は$ 2など)。 |
3 | $#
スクリプトに供給される引数の数。 |
4 | $ *
すべての引数は二重引用符で囲まれています。スクリプトが2つの引数を受け取った場合、$ *は$ 1 $ 2に相当します。 |
5 | $ @
すべての引数は二重引用符で囲まれています。スクリプトが2つの引数を受け取った場合、$ @は$ 1 $ 2に相当します。 |
6 | $?
実行された最後のコマンドの終了ステータス。 |
7 | $$
現在のシェルのプロセス番号。シェルスクリプトの場合、実行中のプロセスIDです。 |
8 | $!
最後のバックグラウンドコマンドのプロセス番号。 |
特別なパラメータ$ *と$ @
すべてのコマンドライン引数に一度にアクセスできる特別なパラメータがあります。$ *と$ @は、二重引用符で囲まれていない限り同じ働きをします。“
どちらのパラメータもコマンドライン引数を指定します。しかし、 “$ *”特殊パラメータはリスト全体をスペースで区切って1つの引数としてとり、 “$ @”特殊パラメータはリスト全体をとり、別々の引数に分割します。
以下のようなシェルスクリプトを記述して、未知数のコマンドライン引数を$ *または$ @の特別なパラメータで処理することができます。
#!/bin/sh for TOKEN in $* do echo $TOKEN done
上記のスクリプトのサンプルを以下に示します。
$./test.sh Net Work eng For Life Net Work eng For Life
注 – ここでは… doneは、後のチュートリアルで説明するループの一種です。
終了ステータス
$?variableは、前のコマンドの終了ステータスを表します。
終了ステータスは、すべてのコマンドが完了したときに返される数値です。一般に、ほとんどのコマンドは、成功した場合は0、失敗した場合は1の終了ステータスを返します。
いくつかのコマンドは、特定の理由で追加の終了ステータスを返します。たとえば、いくつかのコマンドはエラーの種類を区別し、特定のタイプの失敗に応じてさまざまな終了値を返します。
以下は成功したコマンドの例です –
$./test.sh Net work File Name : ./test.sh First Parameter : Net Second Parameter : work Quoted Values: Net work Quoted Values: Net work Total Number of Parameters : 2 $echo $? 0 $