Unix / Linux-特別な変数
この章では、Unixの特殊変数について詳しく説明します。前の章の1つで、変数名に特定の非英数字を使用する場合の注意方法を理解しました。これは、これらの文字が特別なUnix変数の名前で使用されているためです。これらの変数は特定の機能のために予約されています。
たとえば、 $ 文字は、現在のシェルのプロセスID番号(PID)を表します-
$echo $$
上記のコマンドは、現在のシェルのPIDを書き込みます-
29949
次の表は、シェルスクリプトで使用できるいくつかの特別な変数を示しています-
シニア番号 | 変数と説明 |
---|---|
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
Note −ここに 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
$