当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-12 13:03 

注册: 2008-09-03 2:28
帖子: 68
送出感谢: 3
接收感谢: 0 次
比如我想a任务在21-23点做,b任务在23-01点做
下面的脚本只适合a任务,如果想适合b任务,有没有什么好的办法?


time.sh
代码:
#!/bin/bash
hh=`date '+%H'`
time1="$1"
time2="$2"
if [ $hh -ge $time1 ] && [ $hh -le $time2 ]; then
    echo "run"
else
    echo "not run"
fi


a任务运行
time.sh 21 23

b任务运行
time.sh 23 01


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-12 13:26 
头像

注册: 2007-06-13 15:57
帖子: 12666
地址: 在他乡
送出感谢: 54
接收感谢: 91
cron运行两个脚本不行吗


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-12 13:39 
头像

注册: 2010-04-10 16:14
帖子: 2957
系统: Arch Linux
送出感谢: 8
接收感谢: 76
定时执行建议用crontab,不用这么拐弯抹角的……

一定要这么做的话很简单啊,判断一下 $time2 如果小于 $time1 的话,就给 $time2 加24


_________________
沉迷将棋中……


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-19 6:51 

注册: 2008-09-03 2:28
帖子: 68
送出感谢: 3
接收感谢: 0 次
susbarbatus 写道:
定时执行建议用crontab,不用这么拐弯抹角的……

一定要这么做的话很简单啊,判断一下 $time2 如果小于 $time1 的话,就给 $time2 加24


主要是因为任务有点多,一个一个添加到crontab的话会很多,所以我在脚本里做成数组方式

另外$time2加24的话,有个情况,某个任务时间是22点-07点执行,如果$hh=01的时候,[ $hh -ge $time1 ] && [ $hh -le $time2 ] ,即要 01 > 22 && 01 < 31,执行不了。

同时$hh也加24,但这情况13-20执行不了。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-19 6:58 

注册: 2008-09-03 2:28
帖子: 68
送出感谢: 3
接收感谢: 0 次
目前我的解决方法是写两个判断,但这个方法不够精简,脚本代码变得冗余。

当a情况是21-01时用
[ $hh -ge $time1 ] || [ $hh -le $time2 ]
当b情况是02-13时用
[ $hh -ge $time1 ] && [ $hh -le $time2 ]


最后由 cenjianneng 编辑于 2018-06-20 10:06,总共编辑了 1 次

页首
 用户资料  
 
6 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-19 8:45 
头像

注册: 2010-04-10 16:14
帖子: 2957
系统: Arch Linux
送出感谢: 8
接收感谢: 76
是你自己要把日期信息舍弃掉……这种情况就不该用 date '+%H',选一个连日期都存下来的格式再比较,或者做个判断,如果日期跟当前日期不同就加24之类的


_________________
沉迷将棋中……



_________________
评价: 3.7% cenjianneng
 
页首
 用户资料  
 
7 楼 
 文章标题 : Re: 怎么在脚本里做比较好的时间判断
帖子发表于 : 2018-06-19 17:50 

注册: 2008-09-03 2:28
帖子: 68
送出感谢: 3
接收感谢: 0 次
susbarbatus 写道:
是你自己要把日期信息舍弃掉……这种情况就不该用 date '+%H',选一个连日期都存下来的格式再比较,或者做个判断,如果日期跟当前日期不同就加24之类的


加上日期也是个方法,经测试后成功了。

情况a 23 01时,$time2+24小时,并且要再判断 $hh < $time2时 ,$hh也要加24

情况b 12 23时,$time2 $hh,都不用加24


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
cron
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译