출력을 화면과 메일로 보내는 방법은 무엇입니까?

출력을 화면과 메일로 보내는 방법은 무엇입니까?

다음 명령을 사용하여 스크립트 끝에서 이메일을 보냅니다.

echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "[email protected]".

그러나 동일한 메시지를 화면에 표시하고 싶습니다. 동일한 명령문에서 이를 어떻게 수행할 수 있습니까?

답변1

가장 간단한 방법은 teestdout뿐만 아니라 stderr에도 메시지를 보내는 것입니다.

echo "Script finished on date" | tee /dev/stderr \
    | /usr/bin/Mail -s "Script complete" "[email protected]"

tee표준 출력을 포함하여 여러 대상에 입력을 복사합니다. 기본적으로 stderr과 stdout은 모두 화면으로 이동합니다. stdout을 리디렉션하면 Mailstderr만 화면에 남습니다.

어떤 이유로 stdout에 필요한 경우 서브셸(또는 몇 가지 다른 방법)을 사용하여 다시 리디렉션할 수 있습니다.

(
    echo "Script finished on date" | tee /dev/stderr \
        | /usr/bin/Mail -s "Script complete" "[email protected]"
) 2>&1

관련 정보