bash: tee는 실행 후 개행 문자를 먹습니다.

bash: tee는 실행 후 개행 문자를 먹습니다.

스크립트에서 콘솔 및 로그 파일로 stdout 및 stderr을 출력하기 위해 tee를 사용하여 멋진 솔루션을 찾았습니다.

exec &> >(tee log.file)

문제는 때때로 티가 줄 바꿈을 먹는 것처럼 보인다는 것입니다. 예를 들어, 종료하기 전에 개행 문자를 인쇄하는 종료 시 트랩이 있습니다.

trap "echo && exit 55" EXIT HUP INT QUIT KILL

^C이는 쉘이 스크립트가 실행되는 동안 사용자가 누를 수 있는 곳이 아닌 새 줄에서 프롬프트를 인쇄하도록 합니다 . 그러한 exec 호출이 있으면 작동하지 않습니다.

답변1

이 방법은 stderr를 stdout으로 리디렉션한 다음 이를 tee로 파이프합니다. 더 읽기 쉬운 것 같아요.

exec 2>&1 | tee log.file

내 컴퓨터에서 이것을 테스트했는데 "개행 문자 먹기" 문제가 없습니다.

답변2

tee개행 문자가 수신되기 전에 신호에 의해 종료되었을 가능성이 높습니다.

관련 정보