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