JP1/Advanced Shell

[目次][用語][索引][前へ][次へ]


5.1.2 変数

変数とはジョブ定義スクリプト内で値を代入する領域のことです。変数の作成および変数の値を参照できます。また,変数は,エクスポートによって子プロセスに環境変数として引き継がせることができます。変数のことをシェル変数ともいいます。

<この項の構成>
(1) 変数の作成
(2) 変数の値の参照
(3) 変数に設定できる書式,属性

(1) 変数の作成

作成する変数の名称は,命名規則の範囲で任意に指定できます。また,英字は大文字と小文字を区別するため,同じスペルであっても異なる変数名になります。ただし,Windows環境で小文字が含まれる変数をエクスポートしようとするとエラーとなるため,英大文字を使用することを推奨します。変数の命名規則を次に示します。

変数を作成する場合の書式を次に示します。

 
変数名=
 

変数は=の左項に変数名を記述することで作成されます。作成された変数には,値の書き込みおよび値の読み込みができます。変数の属性を読み込み専用に変更する場合は,シェル標準コマンドのreadonlyコマンドを使用します。readonlyコマンドについては,「9.3 シェル標準コマンド」の「readonlyコマンド(変数の属性を読み込み専用に変更する,または読み込み専用の変数を表示する)」を参照してください。

作成と同時に値を代入する場合は,=の右項に値を記述します。変数に代入する値は何文字でも指定できます。しかし,変数に代入した数値を使用して算術演算する場合は,変数の値および算術結果がsigned long型の範囲内でなければなりません。範囲を超えると桁あふれが発生し,正しい結果を求めることができません。

=の両脇にはスペースを入力しないでください。スペースが入っていた場合,変数は作成されません。変数にスペースやメタキャラクタを含む文字列を代入する場合は,クォーテーション(’および”)で囲んでメタキャラクタを無効化にする,またはエスケープ文字を使用してください。メタキャラクタおよびメタキャラクタの無効化については,「5.1.5 メタキャラクタ」を参照してください。

(2) 変数の値の参照

変数の値を参照する場合の書式を次に示します。

 
$変数名
または
${変数名}
 

変数に代入された値は,変数名に$を付けることで参照できます。参照する変数は変数名と完全に一致した変数が対象となります。ただし,変数名に使用できない文字を指定した場合,それまでの文字を変数名と認識し処理をします。

参照する変数名の文字列に,変数名には指定できない文字を指定した場合の実行例
 
abc=xxx
echo $abc@zzz
→"xxx@zzz"が標準出力に出力されます。
 

また,参照する変数名を明示的に指定したい場合は,変数名を{ }で囲むことで参照できます。ただし,{ }で囲った場合は,変数名に使用できない文字が含まれていても変数名の一部として扱い処理をします。

変数abcを明示的に指定し,参照する場合の実行例
 
abc=xxx
abcdef=yyy
echo ${abc}def
→"xxxdef"が標準出力に出力されます。
 

(3) 変数に設定できる書式,属性

JP1/Advanced Shellでは変数に対して書式および属性を設定できます。設定できる書式と属性を次の表に示します。

表5-1 変数に対して設定できる書式

書式 意味
左詰め 変数に代入されている値を左詰めに変換します。
右詰め 変数に代入されている値を右詰めに変換します。
ゼロ詰め 変数に代入されている値を右詰めに変換します。さらに,値が数値の場合は,値の先頭までの空白に0を挿入します。
小文字変換 変数に代入されている値のうち,大文字を小文字に変換します。
大文字変換 変数に代入されている値のうち,小文字を大文字に変換します。

表5-2 変数に対して設定できる属性

属性 意味
整数型属性 変数に代入されている値を整数として扱います。
また,出力時の基数を定義できます。
読み込み専用属性 変数を読み込み専用とします。
エクスポート属性 変数をエクスポートします。

書式および属性はtypesetコマンドで設定します。typesetコマンドの詳細については,「typesetコマンド(変数や関数の属性と値を明示的に宣言する)」を参照してください。

変数に対して書式を設定した例を次に示します。この例では,次の変数が定義されている場合を仮定しています(△は空白)。例の各行の右側には,定義内容に対する説明を記載しています。

  STRn="△AbCdeFgHiJk△"
  NUMn="12345"

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2011, 2012, Hitachi, Ltd.