5.8.6 実行中のジョブ定義スクリプトから外部のジョブ定義スクリプトファイルを呼び出す
#-adsh_scriptコマンドを使用して,外部のジョブ定義スクリプトファイルのジョブコントローラ起動時点での内容を,現在実行中のジョブ定義スクリプトファイルに挿入します。
このコマンドはシェル標準コマンドの.(ドット)コマンドとは異なって,ジョブコントローラ起動時点での外部スクリプトの内容を,呼び出し元のジョブ定義スクリプト内に展開します。呼び出し元のジョブ定義スクリプトと展開後のジョブ定義スクリプトは全体を1個のジョブ定義スクリプトとして構文解析し実行します。
外部スクリプトの定義と,呼び出し元ジョブ定義スクリプトの例を次に示します。
/scripts/exScript.ash(ジョブ開始時点での内容)
#-adsh_step_start exS1 exUap01 #-adsh_step_end exUap02
script.ash
#!/opt/jp1as/bin/adshexec #-adsh_job JOB001 uap01 #-adsh_script /scripts/exScript.ash #-adsh_step_start S2 -run normal uap2 #-adsh_step_end
script.ashは,次のジョブ定義スクリプトと同等の内容です。
#!/opt/jp1as/bin/adshexec #-adsh_job JOB001 uap01 #-adsh_step_start exS1 ←ここから4行がexScript.ashが展開された部分 exUap01 #-adsh_step_end exUap02 #-adsh_step_start S2 -run normal uap2 #-adsh_step_end
また,外部スクリプト/scripts/exScript.ash内のexUap02が終了コード0以外でエラー終了した場合,後続のジョブステップS2はrun属性にnormalが指定されているため,実行されないでジョブが終了します。
.(ドット)コマンドと#-adsh_scriptコマンドの違いを次の表に示します。
項番 |
比較項目 |
.(ドット)コマンド |
#-adsh_scriptコマンド |
|
---|---|---|---|---|
1 |
外部のジョブ定義スクリプト内でのスクリプト拡張コマンドの扱い |
コメントとして扱います |
スクリプト拡張コマンドとして扱います |
|
2 |
スクリプトイメージへの出力 |
出力されません |
出力されます |
|
3 |
相対パス指定時の動作 |
相対パスで指定できます ただし,環境変数PATHの値を参照してパスを解決します |
相対パスで指定できます ただし,環境変数PATHの値を参照しないで,adshexec起動時のカレントディレクトリからの相対パスとして解釈します |
|
4 |
ジョブ内で使用できる上限数 |
制限がありません |
4,095個が上限です |
|
5 |
外部のジョブ定義スクリプト内からのコマンド実行 |
実行できます |
実行できます ただし,同じ外部のジョブ定義スクリプトを再帰的に呼び出し,実行することはできません |
|
6 |
外部のジョブ定義スクリプトへの引数の指定 |
指定できます |
指定できません |
|
7 |
CUIデバッガ |
breakコマンドによる外部のジョブ定義スクリプト内へのブレークポイントの設定 |
設定できません |
設定できます |
8 |
info functionsコマンドによる外部のジョブ定義スクリプト内で定義した関数の情報表示 |
表示できません ただし,外部のジョブ定義スクリプト内での関数定義が完了した時点で表示できるようになります |
表示できます |
|
9 |
listコマンドによる外部のジョブ定義スクリプト内容の表示 |
表示できません |
表示できます |
|
10 |
ジョブ定義スクリプトの実行を停止した際に表示される内容 |
行番号:表示できます ソースファイル行:表示できません コマンド文字列:表示できます |
行番号:表示できます ソースファイル行:表示できます コマンド文字列:表示できます |
- 〈この項の構成〉
(1) 相対パスで指定する場合
外部スクリプトを相対パスで指定すると,先行ジョブ定義スクリプトの動作に関係なく,adshexec起動時のカレントディレクトリからのパスになります。
また,ほかのディレクトリからの相対パス指定はできません。その場合は,絶対パスで指定してください。
指定例を次に示します。
- adshexecコマンド起動時のカレントディレクトリ:/scripts
#/opt/jp1as/bin/adshexec cd /work #-adsh_script ex_script.ash ←/scripts/ex_script.ashが実行される
この例では,#-adsh_scriptコマンドで外部スクリプトファイル/scripts/ex_script.ashが実行されます。直前のcdコマンドでカレントディレクトリを移動していますが,呼び出す外部スクリプトファイルのパスには影響しません。
(2) 絶対パスで指定する場合
/work/ex_script.ashを実行したい場合は,次のように絶対パスで指定してください。
- adshexecコマンド起動時のカレントディレクトリ:/scripts
#/opt/jp1as/bin/adshexec cd /work #-adsh_script /work/ex_script.ash ←/work/ex_script.ashが実行される