Does anyone know if we can say set +x in bash without it being printed:
set -x
command
set +x
traces
+ command
I hacked up a solution to this just recently when I became annoyed with it:
shopt -s expand_aliases
_xtrace() {
case $1 in
on) set -x ;;
off) set +x ;;
esac
}
alias xtrace='{ _xtrace $(cat); } 2>/dev/null <<<'
This allows you to enable and disable xtrace as in the following, where I'm logging how the arguments are assigned to variables:
xtrace on
ARG1=$1
ARG2=$2
xtrace off
And you get output that looks like:
$ ./script.sh one two
+ ARG1=one
+ ARG2=two