3

有没有办法使用 xtrace on ( set -o xtrace) 从输出中隐藏命令?

在 DOS 中,该技术是echo on在隐藏命令前面加上@符号。

4

2 回答 2

4

我从未在 bash 中看到过类似的技巧,但有时您可以使用 subshel​​l 临时启用对您感兴趣的命令的跟踪:

echo "This command is not traced"
(
  set -x
  echo "This command is traced"
)
echo "No longer traced"

如果 subshel​​l 不适合,因为您想修改环境,您可以使用set -xthen set +x,但这会给您留下跟踪set +x命令的工件。

于 2013-03-04T18:34:22.293 回答
0

你可以做这样的事情

# 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
于 2013-03-04T18:44:02.907 回答