有没有办法使用 xtrace on ( set -o xtrace
) 从输出中隐藏命令?
在 DOS 中,该技术是echo on
在隐藏命令前面加上@
符号。
我从未在 bash 中看到过类似的技巧,但有时您可以使用 subshell 临时启用对您感兴趣的命令的跟踪:
echo "This command is not traced"
(
set -x
echo "This command is traced"
)
echo "No longer traced"
如果 subshell 不适合,因为您想修改环境,您可以使用set -x
then 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