Bash의 "set -v"는 중괄호 안의 명령을 표준 출력에 반영하지 않습니다.

Bash의 "set -v"는 중괄호 안의 명령을 표준 출력에 반영하지 않습니다.

다음 테스트 스크립트가 있습니다.

# test.bash
#----------
{

   set -v # Echoes the following 3 parameters
   DELAY_MS=2000
   SCALING=false
   VERBOSE=false
   set +v

   echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST

} 2>&1 | tee test.bash.out

3개의 변수를 설정하고 출력 라인을 에코합니다 TEST. 이후 set -v3개의 변수 설정을 미러링하고 싶습니다.표준 출력그리고 tee기꺼이 test.bash.out. 그러나 Bash 콘솔이나 test.bash.out.

왜 나타나지 않습니까?

변수를 표시하는 쉬운 방법이 있습니까?표준 출력?

답변1

set -v(의 약어 set -o verbose) 소스 코드 라인 인쇄읽을 때, 그리고 쉘이 중괄호 안의 어떤 것을 실행하기 전에 모든 것을 읽어서 &끝에 리디렉션이나 파이프 등이 있는지 알아내야 합니다. (그리고 }그것이 완전히 필요하지 않다고 생각할 수도 있지만 어딘가에 일치하는 것이 있는지 확인하십시오 .)

껍질이 무엇인지 보고 싶다면구현하다, 대신 set -x( 또는 set -o xtrace)를 사용하세요.

관련 정보