我想使用 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/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 之间略有不同)。