隐藏来自xtrace的命令

有没有办法隐藏输出的命令从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