微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 bash 脚本检查日期范围

如何解决使用 bash 脚本检查日期范围

我正在尝试制作一个从 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 指出这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。