0
我編寫了一個shell腳本,我在ash下使用,並將stderr和stdout重定向到日誌文件。我希望只有當stderr不爲空時,才能通過電子郵件將該日誌文件發送給我。如何在電子郵件shell腳本中發送stderr(灰)
我想:
exec >mylog.log 2>&1
# Perform various find commands
if [TEST_IF_STDERR_NOT_EMPTY]; then
/usr/bin/mail -s "mylog" [email protected] < mylog.log
fi
我的問題是雙重的:
1 - 我得到了-sh: /usr/bin/mail: not found
錯誤。看起來郵件命令不存在於ash下(或者至少在我的linux盒子裏,這是一個Synology NAS),有什麼選擇?最壞的情況下,perl可用,但我寧願使用標準的sh命令。
2-如何測試stderr不是空的?
感謝
我的問題有一個錯字。它確實說「郵件」而不是「電子郵件」。我糾正了它。此外,我已經嘗試過哪些(沒有返回任何東西)並找到(返回'-sh:locate:not found')無濟於事。最後,你指向我的線程對我來說不起作用,因爲它檢查一個文件是否爲空,但在我的情況下,日誌不是空的,它包含stderr和stdout,我只想知道stderr是不爲空(日誌文件永遠不會爲空,因爲它始終有stdout)。 – user3022204
嘗試mailx。如果找不到它,請安裝它。 – Hameed
我沒有找到mailx,但我的經理讓電子郵件部分使用sendmail。但是,關於我的第二個問題,我試過'如果[-s 2];然後'測試是stderr是空的,但似乎沒有工作。我認爲這是因爲2被重定向到我的日誌文件,所以它是空的。我如何測試stderr中是否有東西? – user3022204