set -x 出力をキャプチャするために bash スクリプトの一部をファイルにリダイレクトする

set -x 出力をキャプチャするために bash スクリプトの一部をファイルにリダイレクトする

bashスクリプトがあり、set -xを使用してスクリプトの一部をキャプチャし、その出力をファイルにリダイレクトしたいと思います。

ENVFILE設定は表示できますが印刷されます。

set -xの出力をstd outの代わりにファイルにキャプチャする方法はありますか?

#!/bin/sh
...a bunch of stuff....

if [ -e ${ENVFILE} ]; then
set -x
. ${ENVFILE}
set +x
fi # ! -e PROJOB
... a bunch of stuff .... 

ベストアンサー1

bashを使用している場合は、次のものを使用できます。BASH_XTRACEFD:

...
if [ -e ${ENVFILE} ]; then
  BASH_XTRACEFD=3
  set -x
  . ${ENVFILE}
  set +x
  unset BASH_XTRACEFD
fi # ! -e PROJOB
...

次に、次のようにスクリプトを実行します。

/path/to/script 3>/path/to/trace.output

すでにFD 3を使用している場合は、3以外のファイル記述子を使用してください。

おすすめ記事