我有一个每天运行的脚本。根据一周中的哪一天,或者明天是一个月的最后一天,它会将文件移动到不同的位置。我省略了实际功能。
变量:
TOM=$(TZ=UTC-24 date +%d)
SUNDAY=$(date +%w)
逻辑如下:
if [ $TOM -eq 1 ]; then
move_files monthly
echo EXEUTING END OF MONTH MOVE AND PURGE, NON-DAILY, NON-END-OF-MONTH
elif [ $SUNDAY -eq 0 ]; then
move_files weekly
echo EXECUTING SUNDAY MOVE AND PURGE, NON-DAILY, NON-END-OF-MONTH
else echo EXECUTING DAILY MOVE AND PURGE NON-SUNDAY, NON-END-OF-MONTH
move_files daily
fi
一切都正常执行,但是昨天(11 月 30 日)它没有正确地将文件移动到monthly
目录中,这是move_files monthly
功能的一部分。在其他地方测试,这似乎工作正常。
我正在运行它的主机是 UTC。
将上面的一些评论放在一起,使用 GNU 日期,您可以检查明天是否是该月的第一天:
如果您想知道明天是否是本月的最后一天,您可以类似地执行以下操作:
您的问题可能与您的本地时区有关,毕竟不是 UTC。使用 GNU 获得偏移时间的最佳方法
date
是将其-d
选项与描述您想用作参考的日期的参数一起使用,而不是“现在”(如安迪的回答所示)。如果您还想从 GNU 以 UTC 格式返回响应date
,请使用其-u
选项。在不使用 GNU的情况
date
下,在bash
4.3+ 版本中: