Unix-using-variables
Unix/Linux-シェル変数の使用
この章では、Unixでシェル変数を使用する方法を学習します。 変数は、値を割り当てる文字列です。 割り当てられる値は、数値、テキスト、ファイル名、デバイス、またはその他の種類のデータです。
変数は、実際のデータへのポインタにすぎません。 シェルを使用すると、変数を作成、割り当て、および削除できます。
変数名
変数の名前には、文字(a〜zまたはA〜Z)、数字(0〜9)、または下線文字(_)のみを含めることができます。
慣例により、Unixシェル変数の名前は大文字になります。
次の例は、有効な変数名です-
_ALI
TOKEN_A
VAR_1
VAR_2
以下は無効な変数名の例です-
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
!、*、*-*などの他の文字を使用できないのは、これらの文字がシェルにとって特別な意味を持つためです。
変数の定義
変数は次のように定義されています-
variable_name=variable_value
たとえば-
NAME="Zara Ali"
上記の例では、変数NAMEを定義し、それに値「Zara Ali」を割り当てています。 このタイプの変数は*スカラー変数*と呼ばれます。 スカラー変数は、一度に1つの値しか保持できません。
シェルを使用すると、必要な値を変数に保存できます。 たとえば-
VAR1="Zara Ali"
VAR2=100
値へのアクセス
変数に保存されている値にアクセスするには、その名前の前にドル記号( $ )を付けます-
たとえば、次のスクリプトは、定義済み変数NAMEの値にアクセスし、STDOUTに出力します-
#!/bin/sh
NAME="Zara Ali"
echo $NAME
上記のスクリプトは、次の値を生成します-
Zara Ali
読み取り専用変数
シェルは、読み取り専用コマンドを使用して変数を読み取り専用としてマークする方法を提供します。 変数が読み取り専用としてマークされた後、その値は変更できません。
たとえば、次のスクリプトはNAMEの値を変更しようとしているときにエラーを生成します-
#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"
上記のスクリプトは、次の結果を生成します-
/bin/sh: NAME: This variable is read only.
変数の設定解除
変数を設定解除または削除すると、追跡する変数のリストから変数を削除するようシェルに指示されます。 変数の設定を解除すると、変数に保存されている値にアクセスできなくなります。
以下は、 unset コマンドを使用して定義済み変数を設定解除する構文です-
unset variable_name
上記のコマンドは、定義された変数の値を設定解除します。 コマンドがどのように機能するかを示す簡単な例を次に示します-
#!/bin/sh
NAME="Zara Ali"
unset NAME
echo $NAME
上記の例では何も出力されません。 unsetコマンドを使用して、 readonly とマークされている変数を unset することはできません。
変数の種類
シェルが実行されているとき、変数の3つの主なタイプが存在します-
- ローカル変数-ローカル変数は、シェルの現在のインスタンス内に存在する変数です。 シェルによって開始されるプログラムでは使用できません。 これらはコマンドプロンプトで設定されます。
- 環境変数-環境変数は、シェルのすべての子プロセスで使用できます。 一部のプログラムは、正しく機能するために環境変数を必要とします。 通常、シェルスクリプトは、実行するプログラムに必要な環境変数のみを定義します。
- シェル変数-シェル変数は、シェルによって設定される特殊な変数であり、正しく機能するためにシェルに必要です。 これらの変数の一部は環境変数ですが、他の変数はローカル変数です。