シェル変数の値を設定するコマンドは,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」を代入する場合
- 変数「b」に文字列「test」を代入する場合
- 変数「c」に変数「a」の値を代入する場合
- 変数「d[5]」(配列)に数値「1」を代入する場合