3.6 実行したコマンドとその引数を出力する
シェルオプションxtraceを有効にすると,実行したコマンドとその引数がトレース情報として標準エラー出力へ出力されます。
シェルオプションxtraceを有効にする方法は次の3種類です。
-
ジョブ定義スクリプトのsetコマンドに,-xオプションまたは-o xtraceオプションを指定して実行する
-
ジョブ実行時にadshexecコマンドに-xオプションを指定して実行する
-
JP1/Advanced Shellエディタの[実行環境の設定]ダイアログボックスで,「xtraceを指定する」を選択する
トレース情報は次の形式で出力されます。
-
トレース情報の先頭にはシェル変数PS4の値が付与されます。
-
変数の値を参照している場合は,変数の置換結果が出力されます。
-
コマンドの引数にワイルドカードが含まれている場合,ワイルドカードによる置換結果が出力されます。
- トレース情報の出力例
-
実行したジョブ定義スクリプトと,それによって出力されるトレース情報を次の例に示します。
- ジョブ定義スクリプトの内容
0001 : set -o xtrace 0002 : typeset -i cnt=1 0003 : if [ $cnt -eq 1 ] 0004 : then 0005 : echo "--- JOB START ---" 0006 : fi 0007 : date
- 標準エラー出力への出力結果
+ typeset -i cnt=1 + [ 1 -eq 1 ] + echo --- JOB START --- + date
- トレース情報に関する注意事項
-
シェルオプションxtraceを有効にしても,次に示すコマンドとその引数は出力されません。
-
testコマンドの省略形である[[ ]]コマンド
-
スクリプト拡張コマンド
letコマンドの省略形である(( ))コマンドは,トレース情報ではletコマンドに置き換えて出力されます。(( ))コマンドの指定例と出力情報を次に示します。
- ジョブ定義スクリプトの内容
0001 : set -o xtrace 0002 : typeset -i a=0 0003 : (( a=(2+3)*9 )) 0004 : echo $a
- 標準エラー出力への出力結果
+ typeset -i a=0 + let a=(2+3)*9 + echo 45
トレース情報には関数自体のトレース情報は出力されますが,関数内のコマンドのトレース情報は出力されません。関数内のコマンドのトレース情報を出力するには,typesetコマンドを実行して関数のトレースモードを有効にしてください。typesetコマンドの指定例と出力情報を次に示します。
- ジョブ定義スクリプトの内容
0001 : set -o xtrace 0002 : fn1(){ 0003 : echo "call $1 $2" 0004 : echo $LINENO 0005 : } 0006 : echo "in main" 0007 : fn1 "function" "1" 0008 : typeset -ft fn1 0009 : fn1 "function" "2"
- 標準エラー出力への出力結果
+ echo in main + fn1 function 1 + typeset -ft fn1 + fn1 function 2 + echo call function 2 + echo 4
シェルオプションxtraceを有効にすると,子孫ジョブで実行したジョブ定義スクリプト自体のトレース情報は出力されますが,子孫ジョブ内のコマンドのトレース情報は出力されません。子孫ジョブで実行するジョブ定義スクリプトのトレース情報を出力する場合は,子孫ジョブ用のジョブ定義スクリプト内で別途,xtraceシェルオプションを有効にする必要があります。
シェルオプションxtraceを有効にしても,ヒアドキュメントの入力内容はトレース情報として出力されません。
-