有谁知道,如果我们可以说set +x
在bash未经打印它:
set -x
command
set +x
痕迹
+ command
+ set +x
但它应该只是打印
+ command
击是4.1.10版(4)。 这是窃听我有一段时间了-输出堆满了无用的set +x
线,使得跟踪工具,因为它可能是不一样有用。
有谁知道,如果我们可以说set +x
在bash未经打印它:
set -x
command
set +x
痕迹
+ command
+ set +x
但它应该只是打印
+ command
击是4.1.10版(4)。 这是窃听我有一段时间了-输出堆满了无用的set +x
线,使得跟踪工具,因为它可能是不一样有用。
我有同样的问题,我能找到不使用子shell的解决方案:
set -x
command
{ set +x; } 2>/dev/null
您可以使用一个子shell。 在退出子shell中,设置x
将会丢失:
( set -x ; command )
我只是最近设计了一个简单的解决这个当我成为恼火吧:
shopt -s expand_aliases
_xtrace() {
case $1 in
on) set -x ;;
off) set +x ;;
esac
}
alias xtrace='{ _xtrace $(cat); } 2>/dev/null <<<'
这使您可以启用和禁用X跟踪在下面,在那里我记录的参数如何分配给变量:
xtrace on
ARG1=$1
ARG2=$2
xtrace off
你会得到如下所示的输出:
$ ./script.sh one two
+ ARG1=one
+ ARG2=two
如何根据@ user108471的一个简化版本的解决方案:
shopt -s expand_aliases
alias trace_on='set -x'
alias trace_off='{ set +x; } 2>/dev/null'
trace_on
...stuff...
trace_off