この章では、Unixでシェル変数を使用する方法を学びます。変数は、値を代入する文字列です。
割り当てられる値は、数値、テキスト、ファイル名、デバイス、またはその他のタイプのデータです。まあ当たり前なんですが。
変数は、実際のデータへのポインタ以上のものではありません。シェルを使用すると、変数の作成、割り当て、および削除を行うことができます。まあ当たり前何ですが、、、。
変数名
変数の名前には、文字(a〜zまたはA〜Z)、数字(0〜9)またはアンダースコア(_)のみを使用できます。他を使いますとエラーになってしまいますので注意が必要です。
慣例により、Unixシェル変数の名前は大文字になります。
次の例は、有効な変数名です。
TOKENRING_A VAR_11 VAR_22
以下に、無効な変数名の例を示します。
-VARIABLE VAR11-VAR22 VAR_AA!
変数の定義
変数は次のように定義されます。
variable_name=variable_value
例えば -
NAME="Networkenginner"
上記の例では、変数NAMEを定義し、その値に “Networkenginner“を割り当てています。このタイプの変数はスカラ変数と呼ばれます。スカラ変数は、一度に1つの値しか保持できません。
シェルを使用すると、任意の値を変数に格納できます。例えば -
VAR1="Networkenginner" VAR2=100
値へのアクセス
変数に格納された値にアクセスするには、その名前の前にドル記号($)を付けます。
たとえば、次のスクリプトは定義された変数NAMEの値にアクセスし、STDOUTにそれを表示します。
#!/bin/sh NAME="Networkenginner" echo $NAME
上記のスクリプトは次の値を生成します –
Networkenginner
読み取り専用変数
シェルは、読み取り専用コマンドを使用して変数を読み取り専用としてマークする方法を提供します。変数に読み取り専用とマークされた後は、その値を変更することはできません。
たとえば、次のスクリプトは、NAMEの値を変更しようとしているときにエラーを生成します。
#!/bin/sh NAME="Networkenginner" readonly NAME NAME="Qadiri"
上記のスクリプトは次の結果を生成します –
/bin/sh: NAME: This variable is read only.
変数の設定解除
変数の設定を解除するか削除すると、シェルは変数を変数のリストから削除するように指示します。変数を設定解除すると、変数の格納された値にアクセスできなくなります。
unsetコマンドを使用して定義済みの変数を設定解除する構文は次のとおりです。
unset variable_name
上記のコマンドは、定義された変数の値を設定解除します。コマンドの仕組みを示す簡単な例を以下に示します。
#!/bin/sh NAME="Networkenginneri" unset NAME echo $NAME
上記の例では何も印刷されません。もちろんunset で削除しましたからね。
変数の型
シェルが実行されているときは、3つの主要なタイプの変数が存在します。
- ローカル変数 – ローカル変数は、シェルの現在のインスタンス内に存在する変数です。シェルによって起動されたプログラムでは使用できません。これらはコマンドプロンプトで設定します。
- 環境変数 – 環境変数は、シェルの任意の子プロセスで使用できます。一部のプログラムでは、正しく機能するために環境変数が必要です。通常、シェルスクリプトは、実行するプログラムが必要とする環境変数のみを定義します。
- シェル変数 – シェル変数は、シェルによって設定され、正しく機能するためにシェルによって必要とされる特別な変数です。これらの変数のいくつかは環境変数であり、その他はローカル変数です。