Unix / Linux – 特殊変数

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

この章では、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
$

前のページ

次のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。