Bash set +x without it being printed

后端 未结 5 1313
轻奢々
轻奢々 2020-12-07 11:56

Does anyone know if we can say set +x in bash without it being printed:

set -x
command
set +x

traces

+ command         


        
5条回答
  •  一个人的身影
    2020-12-07 12:30

    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
    

提交回复
热议问题