Hitachi

JP1 Version 11 JP1/Advanced Shell 


6.2.22 変数の値を設定する(setコマンド)

シェル変数の値を設定するコマンドは,setコマンドです。引数に代入式を指定することで,その式を評価して変数の値を設定できます。setコマンドの短縮形はありません。setコマンドの形式を次に示します。

set 代入式

代入式の形式を次に示します。

変数名={変数名|数値|"文字列"}

setコマンドを実行した場合の動作を次に示します。

setコマンドの後ろに引数を指定した場合
  • 代入式

    指定した代入式に応じて変数の値を設定します。

  • 作成されていない変数名が含まれる代入式

    エラーメッセージが出力されます。

  • 代入式以外

    エラーメッセージが出力されます。

setコマンドの後ろに引数を指定しない場合

エラーメッセージが出力されます。

注意事項
  • runコマンドによるジョブ定義スクリプト実行中以外では,変数情報が設定されていないため,エラーとなります。

  • 文字列を指定する場合は,ダブルクォーテーションで囲んでください。文字列の中にダブルクォーテーションを使用するときは,\を付けて\"と指定します。また,\"は\\\"と指定します。

  • 代入式の中で最初に出現する等号(=)以降の引数を,変数名および数値または文字列として処理します。

  • 変数名に配列を指定する場合は,要素ごとに指定します。

  • 変数名の指定に$を付けないでください。

  • 数値の指定時にsigned long型の範囲を超えた数値を入力した場合,signed long型の上限値または下限値に丸めて扱います。

  • 代入式の右辺に指定した変数に格納されている数値については,値を丸めることなくそのまま左辺に代入します。

  • スクリプト制御文のfor文の実行前で停止している場合,for文のwordlistsに指定した変数の値は固定です。for文の実行によって代入される変数の値を書き換えたいときは,for文のdo以降で最初に停止した位置で,setコマンドを使用して変数の値を書き換える,またはfor文に到達する前に,setコマンドを使用してwordlistsの変数の値を書き換えてください。例を次に示します。

例1
1: a=1
2: b=2
3: date
4: for num in $a $b
5: do
6:  echo $num  ←numの値を書き換えたい場合,6行目の実行前に行う
7:  pwd
8: done
例2
1: a=1
2: b=2
3: date        ←$aおよび$bの値をfor文で代入される変数に
                 反映する場合,3行目の実行前に行う
4: for num in $a $b
5: do
6:  echo $num
7:  pwd
8: done
使用例

数値を代入する場合,変数に対してtypesetコマンドの-iを指定し,整数型として宣言しておく必要があります。

変数「a」に数値「10」を代入する場合
(adshdb) set a=10
変数「b」に文字列「test」を代入する場合
(adshdb) set b="test"
変数「c」に変数「a」の値を代入する場合
(adshdb) set c=a
変数「d[5]」(配列)に数値「1」を代入する場合
(adshdb) set d[5]=1
「e[5][1]」(配列)に数値「2」を代入する場合
(adshdb) set e[5][1]=2