Unix / Linux-特殊変数

この記事では、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
$
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です