前几天在工作中遇到需要在一个时间周期内每小时传一个时间参数运行脚本的需求,查了一下,成功解决问题,脚本如下:
#!/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为小于等于的意思。