programing

인쇄되지 않고 배쉬 세트 + x

nasanasas 2020. 10. 16. 07:30
반응형

인쇄되지 않고 배쉬 세트 + x


set +x인쇄되지 않고 bash에서 말할 수 있는지 아는 사람이 있습니까?

set -x
command
set +x

흔적

+ command
+ set +x

그러나 그것은 단지 인쇄되어야합니다

+ command

Bash는 버전 4.1.10 (4)입니다. 이것은 당분간 저를 괴롭 히고 있습니다. 출력이 쓸모없는 set +x줄로 어수선 해져서 추적 기능이 유용하지 않게 만듭니다.


나는 같은 문제가 있었고 서브 쉘을 사용하지 않는 해결책을 찾을 수있었습니다.

set -x
command
{ set +x; } 2>/dev/null

서브 쉘을 사용할 수 있습니다. 서브 쉘을 종료하면 설정 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 <<<'

이를 통해 다음과 같이 xtrace를 활성화 및 비활성화 할 수 있습니다. 여기서 인수가 변수에 할당되는 방식을 로깅합니다.

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

참고 URL : https://stackoverflow.com/questions/13195655/bash-set-x-without-it-being-printed

반응형