Unix-special-variables
Unix/Linux-特殊変数
この章では、Unixの特殊変数について詳しく説明します。 前の章の1つで、変数名に特定の非英数字を使用する場合に注意する方法を理解しました。 これは、これらの文字が特殊なUnix変数の名前で使用されているためです。 これらの変数は、特定の機能用に予約されています。
たとえば、 $ 文字は、現在のシェルのプロセスID番号、またはPIDを表します-
$echo $$
上記のコマンドは、現在のシェルのPIDを書き込みます-
29949
次の表は、シェルスクリプトで使用できるいくつかの特殊変数を示しています-
Sr.No. | Variable & Description |
---|---|
1 |
$0 現在のスクリプトのファイル名。 |
2 |
$n これらの変数は、スクリプトが呼び出された引数に対応しています。 ここで、 n は引数の位置に対応する正の10進数です(最初の引数は$ 1、2番目の引数は$ 2などです)。 |
3 |
$# スクリプトに提供される引数の数。 |
4 |
$* すべての引数は二重引用符で囲まれています。 スクリプトが2つの引数を受け取る場合、$ *は$ 1 $ 2と同等です。 |
5 |
$@ すべての引数は個別に二重引用符で囲まれています。 スクリプトが2つの引数を受け取る場合、$ @は$ 1 $ 2と同等です。 |
6 |
$? 最後に実行されたコマンドの終了ステータス。 |
7 |
$$ 現在のシェルのプロセス番号。 シェルスクリプトの場合、これは実行中のプロセスIDです。 |
8 |
$! 最後のバックグラウンドコマンドのプロセス番号。 |
コマンドライン引数
コマンドライン引数$ 1、$ 2、$ 3、… $ 9は位置パラメータであり、$ 0は実際のコマンド、プログラム、シェルスクリプト、または関数を指し、$ 1、$ 2、$ 3、… $ 9はコマンド。
次のスクリプトは、コマンドラインに関連するさまざまな特殊変数を使用します-
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
上記のスクリプトの実行例を次に示します-
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
特別なパラメーター$ *および$ @
すべてのコマンドライン引数に一度にアクセスできる特別なパラメーターがあります。 $ と *$ @ は、二重引用符 "" で囲まれていない限り、両方とも同じように動作します。
両方のパラメーターは、コマンドライン引数を指定します。 ただし、「$ *」特殊パラメーターはリスト全体をスペースで区切った1つの引数として受け取り、「$ @」特殊パラメーターはリスト全体を受け取って個別の引数に分けます。
以下に示すようにシェルスクリプトを記述して、$ *または$ @のいずれかの特殊パラメーターを使用して、不明な数のコマンドライン引数を処理できます-
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
上記のスクリプトの実行例を次に示します-
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
注-ここで do … done は、後続のチュートリアルで説明するループの一種です。
終了ステータス
- $?*変数は、前のコマンドの終了ステータスを表します。
終了ステータスは、すべてのコマンドが完了すると返される数値です。 原則として、ほとんどのコマンドは、成功した場合は終了ステータス0を返し、失敗した場合は1を返します。
一部のコマンドは、特定の理由で追加の終了ステータスを返します。 たとえば、一部のコマンドはエラーの種類を区別し、特定の種類の障害に応じてさまざまな終了値を返します。
以下は成功したコマンドの例です-
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$