스크립트에서 콘솔 및 로그 파일로 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
개행 문자가 수신되기 전에 신호에 의해 종료되었을 가능성이 높습니다.