Bash

Bash 如果腳本從終端 echo stdout 呼叫到終端,如果從 cron 不回顯輸出

  • December 13, 2013

如果像 ./watchdog.sh 一樣呼叫,我希望有一個服務看門狗腳本將狀態回顯到螢幕,但如果它由 cron 執行,則無需回顯輸出。什麼是正確的方法?當腳本在 root 的 crontab 下執行時,stdout 去哪裡了?

對於我執行的許多 cron 作業,我特意製作它們,因此如果在命令行上執行會生成適當的輸出,但如果將相同的腳本放在 crontab 中,我總是將 stdout 和 stderr 都擷取到日誌文件中:

00 12 * * 1-5 /home/aws/bin/myscript.sh >> /home/aswartz/rje/cron.log 2>&1

Cronjob 輸出通過系統的郵件系統發送給使用者。

您可以檢查 stdout 是否是終端:

if [ -t 1 ]; then
    echo Terminal
else
    # not a terminal, don't echo
fi

引用自:https://unix.stackexchange.com/questions/105058