0

我编写了一个在 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错误。似乎邮件命令在 ash 下不存在(或者至少在我的 linux 机器下,这是一个 Synology NAS),还有什么替代方案?最坏的情况是 perl 可用,但我更喜欢使用标准的 sh 命令。

2-如何测试 stderr 不为空?

谢谢

4

1 回答 1

0

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

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

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

于 2014-01-10T05:02:34.897 回答