xtrace on ( set -o xtrace
) を使用して出力からコマンドを非表示にする方法はありますか?
DOS では、echo on
隠れたコマンドの先頭に@
シンボルを付けて回す方法があります。
bash で同様のトリックを見たことはありませんが、サブシェルを使用して、関心のあるコマンドのトレースを一時的に有効にすることができます。
echo "This command is not traced"
(
set -x
echo "This command is traced"
)
echo "No longer traced"
環境を変更したいためにサブシェルが適していない場合は、 を実行できますがset -x
、set +x
トレースset +x
コマンドのアーティファクトが残ります。
あなたはこのようなことをすることができます
# At start of script, or where xtrace may be enabled:
[[ "$SHELLOPTS" =~ xtrace ]] && xtrace_on=1
# Later
set +o xtrace
# Your untraced code here
[[ "$xtrace_on" ]] && set -o xtrace