我想為它創建一個 crontab 條目。因此,解決方案必須是單行的,因為我不想撰寫腳本然后在 crontab 中呼叫該腳本(在腳本檔案中使用完整的 if else,我可以輕松完成此操作)。
但我想使用一些&&或||實作類似的東西:
cmd1 | cmd2 | cmd3 | wc -l != 0? mail -s "Found xyz" ...
那可能嗎 ?
uj5u.com熱心網友回復:
嘗試這個:
test "$(unreadable | long | list | of | commands | in | one | line)" && mail -s ...
如果您只想知道命令是否產生任何輸出,那么計算行數是沒有用的。
uj5u.com熱心網友回復:
你可以使用這樣的東西:
cmd1 | cmd2 | cmd3 | grep '^' >/dev/null && mail -s "Found xyz"
使用&&,mail如果至少有一行輸出,它將運行最終命令 ( )。如果您想在沒有任何輸出的情況下發送郵件,請||改用。
說明:grep如果找到與給定模式匹配的任何行,則該命令成功。該模式^匹配一行的開頭......任何行。因此,grep '^'如果至少有一行(甚至是空白行),則成功。在>/dev/null隨后丟棄輸出。
(您也可以使用grep -q代替>/dev/null,但grep會在第一次匹配后退出,這可能會導致早期命令的 SIGPIPE 錯誤,并可能出現奇怪的問題。我認為該>/dev/null方法在管道中使用時更安全。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341785.html
