![메일을 읽기 위해 Unix에서 mailx 명령의 결과를 텍스트 파일에 저장하는 방법은 무엇입니까?](https://linux55.com/image/138339/%EB%A9%94%EC%9D%BC%EC%9D%84%20%EC%9D%BD%EA%B8%B0%20%EC%9C%84%ED%95%B4%20Unix%EC%97%90%EC%84%9C%20mailx%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
쉘 스크립트를 사용하여 읽지 않은 메일을 UNIX에서 텍스트 파일로 저장하고 싶습니다. 이 쉘 스크립트는 종종 crontab을 사용하여 실행됩니다. 다음 코드를 시도했습니다.
#!/bin/ksh
mailx > mytest.txt
if grep 'unread' mytest.txt
then echo "hello"
else echo "bye"
fi
서버에서 직접 쉘 스크립트를 실행하면 저장된 텍스트 파일과 그 결과를 볼 수 있습니다. 그러나 실행 후 중지되었습니다.
질문이 있으신가요?
답변1
읽지 않은 메시지가 감지 되면 mailx
대화형 모드로 들어가서 읽기, 저장, 회신 등과 같은 대화형 명령을 보낼 때까지 기다립니다.
즉시 종료되도록 /dev/null
리디렉션 할 수 있습니다 .mailx
if mailx </dev/null | grep -q 'unread'; then
echo 'there is unread mail'
else
echo 'there is no unread mail'
fi
이 동작은 특정 구현에 따라 달라질 수 있습니다 mailx
(Unices마다 약간씩 다름).