我写了一个在 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 中设置路径。