按日期时间段补数命令

背景:

在数仓开发中经常会出现按天的跑批脚本,例如这样  sh cmd  2022-01-01

现在有同学 需要2022年一月的都执行 sh cmd 脚本 ,有一些同步 可能会说简单,

写一个脚本

 sh cmd 2022-01-01
 sh cmd 2022-01-04
 sh cmd 2022-01-03
.......
 sh cmd 2022-01-31

这种方式肯定也可以,那么有没有更简便的方法,比如:一个命令输入开始时间和结束时间按日期执行脚本呢。

当然有:

day.sh

#!/bin/bash
STARTDAY=2019-01-01
ENDDAY=`date "+%Y-%m-%d"`

if [ -z "$2" ]; then
    STARTDAY=$STARTDAY
else
    STARTDAY=$2
fi

if [ -z "$3" ]; then
    ENDDAY=$ENDDAY
else
    ENDDAY=$3
fi

echo $STARTDAY
echo $ENDDAY

CMD=$1

S=`date -d "$STARTDAY" +%Y%m%d`
E=`date -d "$ENDDAY" +%Y%m%d`

while [[ "$S" -le "$E" ]];
do
    S=`date -d "$S" +%Y-%m-%d`
    USERS=`date -d "$S" +%Y%m%d`
    echo $S
    sh $CMD $S >>log1.log 2>&1

    S=$(date -d "$USERS+1days" +%Y%m%d)
done

那如果要跑批执行cmd 脚本,

sh day.sh cmd 2022-01-01 2022-01-31

如果时间格式为20220101 可以自由调整时间格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰帆<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值