如何在一个时间周期内运行shell脚本

前几天在工作中遇到需要在一个时间周期内每小时传一个时间参数运行脚本的需求,查了一下,成功解决问题,脚本如下:

#!/bin/bash
set -x
begin=$1
end=$2
be_s="${begin:0:8} ${begin:8:2}"
en_s="${end:0:8} ${end:8:2}"
be_s=$(date -d "${be_s}" +%s)
en_s=$(date -d "${en_s}" +%s)


while [ "$be_s" -le "$en_s" ]
do
        datefmt=`date -d "1970-01-01 UTC ${be_s} seconds" +%Y%m%d%H` #datefmt为天级日期
        #添加处理代码,日期为${datefmt}
        sh ftp_upload.sh ${datefmt}
        be_s=$((be_s+3600))
done

其中,begin为起始时间形如2018040501,end为结束时间形如2018042501

由于脚本需要接受两个参数day和hour,则先把参数分割为两部分,即be_s,然后将两个参数传给脚本,成功运行。

-le为小于等于的意思。

猜你喜欢

转载自blog.csdn.net/z1164072826/article/details/80180333
今日推荐