6.2.21 変数の値を設定する(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