9.4.11 adshsetenvコマンド(変数の命名規則を判定せずに環境変数を定義する)
形式
adshsetenv [環境変数名 [環境変数値]]
機能
変数の命名規則を判定せずに環境変数を定義,環境変数値の参照・更新をします。
adshsetenvコマンドは,環境変数名に指定した文字列で環境変数を定義し,環境変数値に指定した値を環境変数に設定します。
引数を指定しないで実行した場合,adshsetenvコマンドは定義されている環境変数と値を「環境変数名=値」の形式で標準出力に出力します。
引数に環境変数名だけを指定し実行した場合,adshsetenvコマンドは指定された環境変数名に空文字を設定します。
環境変数名に読み込み専用属性の変数を指定し実行した場合,adshsetenvコマンドはエラー終了します。
引数
- 環境変数名
-
定義する環境変数名を指定します。
- 環境変数値
-
環境変数に設定する値を指定します。
環境変数名,環境変数値にスペースや「`」など特殊な意味を持つ文字を含む場合は,ダブルクォーテーション("),シングルクォーテーション(')で囲むか,またはエスケープ文字(\)を使用して,スペースや特殊な意味を持つ文字をエスケープすることで指定できます。ダブルクォーテーション(")で囲まれた文字列に「\」を指定すると,その後ろに指定された文字に関係なく,すべてエスケープ文字として扱われます。そのため,ダブルクォーテーション(")で囲まれた文字列に「\」を指定する場合は,「\\」と指定してください。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
0以外 |
エラー終了 |
注意事項
-
adshsetenvコマンドを使用する場合,次の環境設定パラメーターを設定してください。
- 【Windows版】
-
#-adsh_conf VAR_ENV_NAME_SETENV ENABLE #-adsh_conf VAR_ENV_NAME_IMPORT YES #-adsh_conf VAR_ENV_NAME_LOWERCASE ENABLE
- 【UNIX版】
-
#-adsh_conf VAR_ENV_NAME_SETENV ENABLE #-adsh_conf VAR_ENV_NAME_IMPORT YES
-
命名規則に合致しない環境変数を子孫ジョブに引き継ぐ場合は,ルートジョブ,子孫ジョブどちらも環境設定パラメーターVAR_ENV_NAME_IMPORTにYESを設定してください。
-
adshsetenvコマンドで定義した環境変数のうち,命名規則に合致する環境変数はジョブ定義スクリプト内で値を参照・更新することができます。しかし,命名規則に合致しない環境変数は変数置換で値を参照することができません。また,代入式などで値を更新することもできません。
- 例1
-
adshsetenv CBL_帳票01 FILE01 echo ${CBL_帳票01}
→環境変数CBL_帳票01は定義できますが,命名規則に合致しないため,値は参照できません。
-
環境変数名に整数型のシェル変数を指定した場合,環境変数値には数値,または数値が代入されたシェル変数を指定してください。
- 例1
-
typeset -i USER_ID adshsetenv USER_ID 567890
→環境変数USER_IDには「567890」が格納されます。
- 例2
-
typeset -i USER_ID=123456 TEST_ID=567890 adshsetenv USER_ID TEST_ID
→環境変数名に指定されたUSER_IDは整数型のシェル変数であり,環境変数値に指定された文字列TEST_IDはシェル変数の命名規則に合致しています。そのため,TEST_IDは変数置換され,環境変数USER_IDにはシェル変数TEST_IDの値「567890」が格納されます。
- 例3
-
typeset -i USER_ID=123456 adshsetenv USER_ID TEST_NUM1
→環境変数名に指定されたUSER_IDは整数型のシェル変数であり,環境変数値に指定された文字列TEST_NUM1はシェル変数の命名規則に合致しています。そのため,TEST_NUM1は変数置換されます。しかし,TEST_NUM1は未定義のシェル変数のため,環境変数USER_IDには「0」が格納されます。
環境変数名に整数型のシェル変数,環境変数値に命名規則に合致しない文字列を指定した場合,adshsetenvコマンドはエラー終了します。
- 例4
-
typeset -i USER_ID=123456 adshsetenv USER_ID 1234TEST
→この例では,環境変数名には整数型のシェル変数,環境変数値には数字以外を含む文字列を指定しています。環境変数名が整数型のため,adshsetenvコマンドは環境変数値をシェル変数と解釈し変数置換します。しかし,文字列1234TESTはシェル変数の命名規則に合致しないため,adshsetenvコマンドはエラー終了します。
- 例5
-
typeset -i USER_ID=123456 adshsetenv 1234TEST 999999 adshsetenv USER_ID 1234TEST
→環境変数1234TESTは定義されています。しかし,命名規則に合致していない変数名のため,ジョブ定義スクリプト内で直接参照することはできません。そのため,2つ目のadshsetenvコマンドはエラー終了します。
-
adshsetenvコマンドでは配列を定義することはできません。環境変数名に「[」,「]」を含む文字列を指定した場合であっても,配列ではなく「[」,「]」を含む名称の環境変数として定義します。
- 例1
-
export ARRAY[1]=123456 adshsetenv ARRAY[1] 999999
→「ARRAY[1]」を定義した場合,exportコマンドでは配列として定義されます。しかし,adshsetenvコマンドででは「ARRAY[1]」という名称の環境変数として定義されます。
-
環境変数名に「=」を含む環境変数は別プロセスに正しく継承されないため,定義しないでください。
使用例
-
-(ハイフン)を含む名称の環境変数を定義する場合
adshsetenv SYS-INIT INITFILE
-
日本語を含む名称の環境変数を定義する場合
adshsetenv CBL_サービス01 FILE01
-
定義されている環境変数の一覧を出力する場合
adshsetenv