Unix / Linux-Shellシェル変数の使い方

この記事では、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変数を必要とします。 これらの変数のいくつかは環境変数ですが、その他の変数はローカル変数です。
Share

コメントを残す

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