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