如何在电子邮件外壳脚本(ash)中发送标准



我写了一个在 ash 下使用的 shell 脚本,并将 stderr 和 stdout 重定向到日志文件。我希望只有在 stderr 不为空时才通过电子邮件将该日志文件发送给我。

我试过了:

exec >mylog.log 2>&1
# Perform various find commands
if [TEST_IF_STDERR_NOT_EMPTY]; then
/usr/bin/mail -s "mylog" email@mydomain.com < mylog.log
fi

我的问题是双重的:

1-我收到-sh: /usr/bin/mail: not found错误。似乎 mail 命令在 ash 下不存在(或者至少在我的 linux 盒子下,这是一个 Synology NAS),有什么替代方案?最坏的情况是,perl 是可用的,但我更喜欢使用标准的 sh 命令。

2-如何测试标准不是空的?

谢谢

如何在 bash 中检查文件是否为空

至于第一个问题,在你的代码中你调用mail但在你调用email的帖子中较低。检查您的代码并确保它是mail .

使用 which mail 获取完整路径。也许它没有安装在/usr/bin/中。使用查找查找mail 。如果可以转到另一个 shell,请运行它,然后执行 which mail 以获取邮件的完整路径,以防在备用 shell 中设置路径。

最新更新