5.5.4 外部コマンドの終了コードが設定されるシェル変数【Windows限定】
JP1/Advanced Shellでは,ジョブコントローラが実行する外部コマンドの終了コードを,シェル変数ADSH_RC_EXTERNALに設定します。
- 〈この項の構成〉
(1) シェル変数ADSH_RC_EXTERNAL
JP1/Advanced Shellのジョブコントローラでは,外部コマンドの終了コードを0~255とすることを推奨しています。0~255の範囲外の終了コードでリターンするバッチファイルやプログラムを実行し,その実行結果を終了コードで判定する場合は,シェル変数ADSH_RC_EXTERNALで実行結果を取得してください。シェル変数ADSH_RC_EXTERNALの意味と有効範囲を次の表に示します。
シェル変数名 |
意味 |
有効範囲 |
---|---|---|
ADSH_RC_EXTERNAL |
最後に実行した外部コマンドの終了コードが設定されます。次のコマンドをジョブ定義スクリプト内で実行すると,ジョブコントローラはシェル変数ADSH_RC_EXTERNALの値を更新します。
また,上記以外のコマンドでも,別プロセスでコマンドを実行(パイプ,コマンド置換,|&,&を使用)した場合は値が更新されます。初期値は0,属性は整数型,読み込み専用です。 |
-2147483648~2147483647 |
(2) 使用例
シェル変数ADSH_RC_EXTERNALの使用例を次に示します。
- 外部コマンドがリターンする0~255の範囲以外の値を取得する場合
-
"D:\\bin\\uap01.exe" ←終了コード800を返すUAP echo $? ←標準出力に32が出力される※ echo $ADSH_RC_EXTERNAL ←標準出力に800が出力される
注※ 800=0x320。シェル変数?は外部コマンドがリターンする値の下位8ビットを終了コードとして扱います。
- 外部コマンドがリターンする値が512の時,ジョブを終了コード2で終了する場合
-
"D:\\bin\\uap02.exe" if [ $ADSH_RC_EXTERNAL -eq 512 ] then exit 2 fi
(3) 注意事項
-
シェル変数ADSH_RC_EXTERNALの値の変更,属性の変更,または無効化はできません。
-
スクリプト拡張コマンド#-adsh_step_startのstepVar属性に,シェル変数ADSH_RC_EXTERNALを指定できません。指定するとKNAX6312-Eメッセージを出力してエラー終了します。
-
ジョブコントローラは,ジョブ定義スクリプトのほか,.envファイル内,初期設定スクリプト内,または外部スクリプト内でコマンドを実行した場合も,シェル変数ADSH_RC_EXTERNALの値を更新します。
-
ジョブコントローラは,ジョブ定義スクリプトを実行する直前に,シェル変数ADSH_RC_EXTERNALを0で初期化します。そのため,親プロセスで環境変数としてADSH_RC_EXTERNALを定義してもジョブコントローラに環境変数ADSH_RC_EXTERNALの値は引き継がれません。また,環境ファイル内で,exportパラメーターでADSH_RC_EXTERNALを定義しても値は引き継がれません。
-
シェル変数ADSH_RC_EXTERNALは,外部コマンドが正常終了したか,エラー終了したかの判断に影響を及ぼしません。
-
ジョブコントローラでは,パイプやコマンド置換で実行するコマンドの実行プロセスがカレントプロセスか別プロセスかが,次の環境設定パラメーターの指定によって異なります。そのため,同じジョブ定義スクリプトであっても,環境設定パラメーターの指定によっては,シェル変数ADSH_RC_EXTERNALを更新する契機が異なることがあります。
-
PIPE_CMD_LASTパラメーター
-
CMDSUB_PROCESSパラメーター
-
-
コマンドを別プロセスで実行した場合,シェル変数ADSH_RC_EXTERNALに設定される値は,コマンドがリターンする値の下位8ビットになることがあります。別プロセスで実行したコマンドの結果取得に,シェル変数ADSH_RC_EXTERNALを使用しないでください。