この記事では、UnixでShell変数を使用する方法を説明します。 変数は、値を割り当てる文字列です。 割り当てられる値は、数値、テキスト、ファイル名、デバイス、またはその他のタイプのデータです。
変数は、実際のデータへのポインターです。 Shellを使用すると、変数を作成、割り当て、および削除できます。
目次
変数名
変数名には、文字(aからzまたはAからZ)、数字(0から9)、またはアンダースコア文字(_)のみを含めることができます。
慣例により、Unix shell変数は大文字で名前が付けられます。
以下のは有効な変数名の実例です。
_ALI
TOKEN_A
VAR_1
VAR_2
以下のは無効な変数名の実例です。
2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!
その他のキャラクターが使えない理由は、「!,*」、または「-」などの文字はshellに対して特別な意味を持っています。
変数を定義する
変数は次のように定義されます。
variable_name=variable_value
例えば
NAME="Gingerbeer"
上記の実例では、変数NAMEを定義し、それに値「Gingerbeer」を割り当てています。 このタイプの変数は、スカラー変数と呼ばれます。 スカラー変数は、一回に1つの値しか保持できません。
Shellを使用すると、必要な値を変数に格納できます。 例えば、
VAR1="Gingerbeer"
VAR2=100
アクセス値
変数に格納されている値にアクセスするには、変数名の前にドル記号($
)を付けます。
例えば、以下のスクリプトは、定義された変数NAMEの値にアクセスし、STDOUTに出力します。
#!/bin/sh
NAME="Gingerbeer"
echo $NAME
上記のスクリプトは以下の値を生成します。
Gingerbeer
読み取り専用変数
Shellは、読み取り専用コマンドを使用して変数を読み取り専用としてマークするメソッドを提供します。 変数が読み取り専用としてマークされると、その値は変更できません。
例えば、以下のスクリプトは、NAME の値を変更する場合に、エラーを生成します。
#!/bin/sh
NAME="Gingerbeer"
readonly NAME
NAME="Ceodata"
上記のスクリプトは以下の結果を生成します。
/bin/sh: NAME: This variable is read only.
削除 / 設定解除
変数の設定を解除または削除すると、追跡する変数のリストから変数を削除するようにShellプログラムに指示されます。 変数の設定を解除すると、変数に格納されている値にアクセスできなくなります。
以下のは、unset
コマンドを使用し、変数の設定を解除する構文です。
unset variable_name
上記のコマンドは、変数値の設定を解除します。以下のは、コマンドの実行過程を示す簡単な実例です。
#!/bin/sh
NAME="Gingerbeer"
unset NAME
echo $NAME
上記の実例では何も出力されません。 unsetコマンドを使用して、readonlyとしてマークされた変数を解除することはできません。
変数型
Shellが実行する場合、変数には主に3種類の型があります。
- ローカル変数-ローカル変数は、Shellのインスタンスに存在する変数です。 Shellによって開始されたプログラムには適用されません。 これらはコマンドプロンプトで設定されます。
- 環境変数-環境変数は、Shellの任意の子プロセスで使用できます。 特定のプログラムは、正しく実行するために環境変数を必要とします。 通常、Shellスクリプトは、実行するプログラムに必要な環境変数のみを定義します。
- Shell変数-Shell変数はShellによって設定される特別な変数であり、Shellは正常に実行するためにShelll変数を必要とします。 これらの変数のいくつかは環境変数ですが、その他の変数はローカル変数です。
コメントを残す