この記事では、Unixの特殊変数について詳しく説明します。 前の記事では、変数名に特定の英字と数字以外の文字を使用する場合、注意すべきのことについて説明します。 これは、これらの文字が特別なUnixの変数名で使用されているためです。 これらの変数は特定の機能のために保留されています。
例えば、$
文字は、現在のshellのプロセスID番号またはPIDを表します。
$echo $$
上記のコマンドを、現在のshellのPIDに入力します。
29949!!
以下のテーブルには、Shellスクリプトで使用できるいくつかの特殊変数を示します。
番号 | 変数と説明 |
1 | $0 現在のスクリプトのファイル名です。 |
2 | $n これらの変数は、呼び出し元のスクリプトのパラメータに対応しています。 ここで、nはパラメータの位置に対応する正の10進数です(最初のパラメータは$1であり、2番目のパラメータは$2であり、このように類推します)。 |
3 | $# スクリプトに提供されるパラメータ数です。 |
4 | $* すべてのパラメータは二重引用符で囲まれています。 スクリプトが2つのパラメータを受け取る場合、$*は$1 $2に相当します。 |
5 | $@ すべてのパラメータは個別に二重引用符で囲まれています。 スクリプトが2つのパラメータを受け取る場合、$@は$1 $2に相当します。 |
6 | $? 最後に実行されたコマンドの終了ステータスです。 |
7 | $$ 現在のshellのプロセスIDです。 shellスクリプトの場合、これはスクリプトが実行されるプロセスIDです。 |
8 | $! 最後のバックグラウンドコマンドのプロセスIDです。 |
コマンドライン(CommandLine)パラメータ
コマンドラインパラメータの$1,$2,$3,… $9は位置パラメータであり、$0は実際のコマンド、プログラム、shellスクリプト、または関数を指し、$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 gingerbeer
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: gingerbeer
Quoted Values: gingerbeer
Total Number of Parameters : 2
特殊パラメータ$ *および$ @
すべてのコマンドラインパラメータに一度にアクセスできる特別なパラメータがいくつかあります。$ *
と$ @
は、二重引用符「“”」で囲まれていない限り、同じ操作を実行します。
これらのパラメータは両方とも、コマンドラインパラメータを指定します。 ただし、“$*”特殊パラメータは、リスト全体をスペースを挟んだ1つのパラメータとして扱い、“ $@”特殊パラメータは、リスト全体を1つのパラメータとして扱い、個別のパラメータに分割します。
以下に示すようなshellスクリプトを記述して、$*または$@の特殊パラメータを使用して、不定量のコマンドラインパラメータを処理できます。
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
以下のは、上記のスクリプトの実行実例です。
$./test.sh gingerbeer 10 Years Old
ginger
beer
10
Years
Old
ヒント–do … done
はループであり、別の記事で詳しく説明します。
終了ステータス
$?
変数は、前のコマンドの終了ステータスを表します。
終了ステータスは、各コマンドが完了した後の返す値です。 通常、ほとんどのコマンドは、成功した場合は終了ステータスを返し、失敗した場合は1を返します。
あるコマンドは、特別な理由で他の終了ステータスを返します。 例えば、一部のコマンドはエラーの種類を区別し、特定の種類の障害に応じてさまざまな終了値を返します。
以下のは、順調に実行できるコマンドの実例です。
$./test.sh gingerbeer
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: gingerbeer
Quoted Values: gingerbeer
Total Number of Parameters : 2
$echo $?
0
$
コメントを残す