내 스크립트에는 다음이 있습니다.
#!/bin/bash
logFile='script.log'
echo -n > $logFile
log="tee -a $logFile"
set -x
scp ... user@host:...
ssh user@host "
echo '...message...'
" 2>&1 | $log
{ set +x ;} 2> /dev/null # avoids trace output of '++ set +x'
출력은 다음과 같습니다
++ ssh user@host '
echo '\''> ...message...'\''
'
++ tee -a script.log
> ...message...
++ tee ...
어떻게든 추적선을 억제할 수 있습니까?
답변1
전체 파이프라인을 추적하는 대신 적절한 명령에 대해서만 추적을 활성화할 수 있습니다. 다중 명령 파이프라인의 각 명령은 자체 하위 셸 실행 환경에서 실행되며( lastpipe
이 옵션이 적용될 때 Bash의 마지막 명령은 제외) set
각 명령에 다른 옵션을 적용할 수 있습니다.
+tee
예를 들어 코드를 인쇄 하지 않고 약간 요약하려면
$ set -x; echo foo | tee; { set +x; } 2>/dev/null
+ echo foo
+ tee
foo
간단한 접근 방식은 다음과 같습니다.
$ { set -x; echo foo; } | tee
+ echo foo
foo