Shell脚本补数据

自己写的脚本,亲测有用。

传任意两个日期(yyyy-MM-dd)参数,按天跑

执行脚本命令示例:sh xx.sh 参数1(开始时间) 参数2(结束时间)

#!/bin/bash
start=$1
end=$2
starttime=`date +'%Y-%m-%d'`

#计算时间差
stime=`date -d "$start" +'%s'`
etime=`date -d "$end" +'%s'`
nowtime=`date -d "$starttime" +'%s'`
diff1=`expr $nowtime - $stime`
diff2=`expr $nowtime - $etime`
daydiff1=`expr $diff1 / 86400`
daydiff2=`expr $diff2 / 86400`

for((i=daydiff2;i<=$daydiff1;i++))
do
day=`date -d "$i days ago" +'%Y-%m-%d'`
echo "clean the data of "$day"................"
java的绝对路径 -cp xx.jar 相对路径 $day      //执行该jar包需要一个参数(yyyy-MM-dd)
echo "finish repair the data of "$day"....................................."
done

endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"

不传参,按天

执行脚本命令:sh xx.sh
示例1:从昨天一直回补到15天前日期的数据,根据需要可以合理改变for循环里i的取值范围。

#!/bin/bash 
starttime=`date +'%Y-%m-%d %H:%M:%S'`
echo "current time is "$starttime

for((i=1;i<=15;i++))
do
   day=`date -d "${i} day ago" +'%Y-%m-%d'`
    java的绝对路径 -cp xx.jar 相对路径 $day     //执行该jar包需要一个参数(yyyy-MM-dd)
echo "clean date of ${day}" 
done
echo "finished "

endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"

示例2:回溯前1-7、15天的数据

#!/bin/bash
starttime=`date +'%Y-%m-%d %H:%M:%S'`
echo "current time is "$starttime
#回溯1-7天
for((i=1;i<=7;i++))
do
   day=`date -d "${i} day ago" +'%Y-%m-%d'`
   echo "clean date of ${day}" 
   java的绝对路径 -cp xx.jar 相对路径 $day     //执行该jar包需要一个参数(yyyy-MM-dd)
done

#回溯前第15天
day15=`date -d "15 day ago" +'%Y-%m-%d'`
echo "clean date of ${day15}" 
java的绝对路径 -cp xx.jar 相对路径 ${day15}
echo "finished "

endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"

不传参,按天按小时

执行脚本命令:sh xx.sh
示例里从当前日期一直回补到30天前日期的数据,根据需要可以合理改变for循环里i的取值范围。

#!/bin/bash
starttime=`date +'%Y-%m-%d %H:%M:%S'`

for((i=0;i<=30;i++))
do
   start_time=`date -d "${i} day ago" +'%Y-%m-%d'`
        for((j=0;j<=23;j++))
        do
        if [ ${j} -lt "10" ]    //判断是否小于10
        then
        d=`date +"${start_time} 0${j}"`     //小于10则补0
        else
        d=`date +"${start_time} ${j}"`
        fi

        echo "to clean date of ${d}:00:00 ~ ${d}:59:59"
        java的绝对路径 -cp xx.jar 相对路径 "${d}:00:00" "${d}:59:59" //执行该jar包需要两个参数(yyyy-MM-dd HH:mm:ss)
        done
echo "clean date of ${start_time}" 
done
echo "finished "

endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值