本月第一个星期四不会运行的 Bash 条件

本月第一个星期四不会运行的 Bash 条件

我有一个每周运行脚本两次(周一/周四)的 cron - 这运行良好,但我需要在该月的第一个周四停止它的处理。

我想调整这段代码:

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

我假设我只是将 = 更改为 != 但想知道是否有任何我需要注意的陷阱?

这个问题(我从哪里得到上面的代码)是与我想要的相反- 我实际上更愿意在已接受的答案中添加评论来提出这个问题,但我需要 50 名代表。

答案1

使用 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

相关内容