如何将unix中mailx命令的结果保存到文本文件中读取邮件?

如何将unix中mailx命令的结果保存到文本文件中读取邮件?

我想使用 shell 脚本将未读邮件保存到 UNIX 中的文本文件中。此 shell 脚本经常使用 crontab 执行。我尝试过以下代码:

#!/bin/ksh

mailx > mytest.txt
if grep 'unread' mytest.txt
then echo "hello" 
else echo "bye"
fi

直接从服务器执行 shell 脚本时,我可以看到保存的文本文件及其结果。但执行之后就停止了。

有什么问题吗?

答案1

如果mailx检测到未读消息,它会进入交互模式并等待您发送阅读、保存、回复等交互命令。

您可以重定向/dev/nullmailx使其立即退出:

if mailx </dev/null | grep -q 'unread'; then
    echo 'there is unread mail'
else
    echo 'there is no unread mail'
fi

这个行为可能取决于具体的实现mailx(在 Unices 之间略有不同)。

相关内容