為傳回 exit 2 的 if 條件的錯誤語句寫入日誌

為傳回 exit 2 的 if 條件的錯誤語句寫入日誌

我有一個腳本每 5 分鐘運行一次,條件子句中有兩個退出。

#!/bin/bash
date=$(date +%Y)
if [ $date -eq '2014' ]
then
    echo "Current year is $date"
    exit 0
else
    echo "Current year is not $date"
    exit 2
fi

如何指定僅在退出 2 時寫入日誌?這在 crontab 中可能嗎?

5 * * * * /home/user/script.sh >> script.log 2>> script.err

我已經明白了 “>>腳本.log”寫入腳本的所有回傳值和“ 2 >> 腳本.錯誤”僅當腳本運行不正確時才寫入。所以我不知道是否有機會只寫腳本中 exit 2 的位置。

答案1

要編寫您的錯誤以stderr使用1>&2重定向:

echo "Current year is not $date" 1>&2

exit [number]指定返回代碼[number].

也可以看看:

檔案描述符

標準流

關於重定向

答案2

您可以使用logger( man logger),因為它是從cron.而且您實際上並不需要退出程式碼,因為您沒有對它們執行任何操作,至少在上面的程式碼片段中是如此。

#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
    logger -f script.log "Current year is not $date"
fi

相關內容