首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用date命令比较时间

问使用date命令比较时间
EN

Stack Overflow用户
提问于 2010-05-25 02:02:53
回答 2查看 25.6K关注 0票数 8

假设我希望bash脚本的某个块仅在上午8点(8:00)和下午5点(17:00)之间执行,否则什么也不做。该脚本正在持续运行。

到目前为止,我使用的是date命令。

如何使用它与时间范围进行比较?

EN

回答 2

Stack Overflow用户

发布于 2010-05-25 02:07:49

只要检查一下一天中的当前小时是否在8到5之间--因为你使用的是整数,你甚至不需要浪费时间:

代码语言:javascript
复制
hour=$(date +%H)
if [ "$hour" -lt 17 -a "$hour" -ge 8 ]; then
    # do stuff
fi

当然,这在8:00:00是对的,但是在5:00:00是假的;希望这不是什么大问题。

对于更复杂的时间范围,一种更简单的方法可能是转换回unix时间,这样您可以更容易地进行比较:

代码语言:javascript
复制
begin=$(date --date="8:00" +%s)
end=$(date --date="17:00" +%s)
now=$(date +%s)
# if you want to use a given time instead of the current time, use
# $(date --date=$some_time +%s)

if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
    # do stuff
fi

当然,我犯了按要求回答问题的错误。正如seamus建议的那样,您可以只使用cron作业-它可以在8点启动服务,并在5点停止服务,或者在预期的时间运行它。

票数 22
EN

Stack Overflow用户

发布于 2010-05-25 02:08:01

为什么不直接使用cron作业呢?

否则

代码语言:javascript
复制
if [[ `date +%H` -ge 8 && `date +%H` -lt 17 ]];then
    do_stuff()
fi

将会完成这项工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2899110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档