Hitachi

JP1 Version 11 JP1/Advanced Shell 


3.6 実行したコマンドとその引数を出力する

シェルオプションxtraceを有効にすると,実行したコマンドとその引数がトレース情報として標準エラー出力へ出力されます。

シェルオプションxtraceを有効にする方法は次の3種類です。

トレース情報は次の形式で出力されます。

トレース情報の出力例

実行したジョブ定義スクリプトと,それによって出力されるトレース情報を次の例に示します。

ジョブ定義スクリプトの内容
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を有効にしても,ヒアドキュメントの入力内容はトレース情報として出力されません。