while 루프에 오류 스트림 쓰기

while 루프에 오류 스트림 쓰기

대략 다음과 같은 코드가 있습니다.

cat infile | while read line; do
    echo 2> 'log ' $line
    echo $line
done > outfile

outfile올바르게 생성되었습니다. 그러나 STDERR 출력은 사라집니다. outfile위의 마지막 줄을 바꾸면 생성 done > outfile 2> errfile되지만 errfile비어 있습니다.

루프 내에서 오류 출력을 캡처할 수 있습니까? 상위 STDERR로 직접 스트리밍하는 것이 좋습니다(위의 내용은 표준 오류 스트림이 다른 프로세스에서 캡처되는 더 큰 스크립트의 일부입니다).

답변1

구문이 잘못되었습니다. 가 아니어야 >&2합니다 2>.

답변2

루프 내부에서 stderr 을 리디렉션하기 때문에 예제가 작동하지 않습니다 2>. 그런 다음 리디렉션하려고 하면다시루프 외부에는 리디렉션할 스트림이 없습니다.

이것이 당신이 정말로하고 싶은 일인 것 같습니다 :

cat infile | while read line; do
    echo >&2 'log ' $line
    echo $line
done > outfile 2> errfile

이렇게 하면 while 루프 내부의 모든 오류가 예상대로 리디렉션됩니다. 질문의 예와 같이 루프 내에서 오류를 리디렉션하지 않은 한.

관련 정보