Bash

不會在本月的第一個星期四執行的 Bash 條件

  • October 10, 2019

我有一個每週(週一/週四)執行兩次腳本的 cron - 這執行良好,但我需要在每月的第一個週四停止它的處理。

我想修改這段程式碼:

we=$(LC_TIME=C date +%A)
dm=$(date +%d)
if [ "$we" = "Thursday" ] && [ "$dm" -lt 8 ]
then 
   .....
fi

我假設我只是將 = 更改為 != 但想知道是否有任何我需要注意的問題?

這個問題(我從哪裡得到上面的程式碼)與我想要的相反——我實際上更願意在接受的答案中添加評論來提出這個問題,但我需要 50 個代表。

使用 bash 測試:

if [[ "$(LC_TIME=C date +%A)" == 'Thursday' && "$(date +%d)" -le 7 ]]; then
   exit 1
fi

注意:從功能上講,這與您問題中的測試沒有什麼不同。

只需將其添加到腳本的頂部即可。如果是每月的第一個星期四,腳本將立即退出,否則將執行。

或者,您可以將其直接放入您的 crontab 條目中,例如:

0 1 * * 1,4 [[ "$(LC_TIME=C date +\%A)" == 'Thursday' && "$(date +\%d)" -le 7 ]] || /path/to/script.sh

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