问题描述
我正在尝试制作一个从 2020 年 12 月 24 日到 2021 年 6 月 1 日期间有效的脚本。现在我只能在 2 个日期中使用它:
if [ "$(date +'%m%d')" != "1224" ] && [ "$(date +'%m%d')" != "1226" ];
所以这个脚本应该从 12/24 - 01/06 开始工作。 有什么建议么?谢谢
解决方法
您可以使用 +%s
中的 date
选项将开始/结束日期转换为 epoch time。您使用 -d
选项提供日期。
然后,您再次使用 +%s
检索当前日期并使用标准整数比较进行比较,如下所示:
start=$(date +%s -d '12/24/2020')
finish=$(date +%s -d '06/02/2021')
now=$(date +%s)
if [ $now -ge $start ] && [ $now -lt $finish ]
then
echo "Do something"
else
echo "Skip"
fi
编辑:对于完成日期,有必要使用之后您预期的完成日期并使用 -lt
进行比较。这是因为 date
将返回指定日期开始的时间戳。因此,这样做,您最终会在 2021 年 6 月 1 日午夜之前成功进行比较。感谢 @gordon-davisson 指出这一点。