分页: 1 / 1

怎么在脚本里做比较好的时间判断

发表于 : 2018-06-12 13:03
cenjianneng
比如我想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

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-12 13:26
daf3707
cron运行两个脚本不行吗

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-12 13:39
susbarbatus
定时执行建议用crontab,不用这么拐弯抹角的……

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

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-19 6:51
cenjianneng
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执行不了。

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-19 6:58
cenjianneng
目前我的解决方法是写两个判断,但这个方法不够精简,脚本代码变得冗余。

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

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-19 8:45
susbarbatus
是你自己要把日期信息舍弃掉……这种情况就不该用 date '+%H',选一个连日期都存下来的格式再比较,或者做个判断,如果日期跟当前日期不同就加24之类的

Re: 怎么在脚本里做比较好的时间判断

发表于 : 2018-06-19 17:50
cenjianneng
susbarbatus 写了:是你自己要把日期信息舍弃掉……这种情况就不该用 date '+%H',选一个连日期都存下来的格式再比较,或者做个判断,如果日期跟当前日期不同就加24之类的
加上日期也是个方法,经测试后成功了。

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

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