shell循环脚本

1.循环脚本说明

seq 0 1000 是一个0-1000 的集合,包含前后。
下面脚本是执行的时bizdate 和 curdate 日期之间的 import_t_std_stock_info_daily这个函数。包含bizdate和 curdate 的日期,最长时间间隔为(1001)天

注:脚本1和脚本2的执行结果是一样的

脚本1.sh

# !/bin/bash

# 定义初始时间
bizdate=2019-12-27
curdate=2021-03-11

# 定义sqoop导入函数
import_t_std_stock_info_daily() {

        hive -e "load data inpath '/origin_data/tclmember/events/3/events/$bizdate.txt' OVERWRITE into table tclmember.events partition(dt='$bizdate');"

}

# 循环
for i in `seq 0 1000`
do
        import_t_std_stock_info_daily
        bizdate=`date -d "${bizdate} +1 day" "+%Y-%m-%d"`
#循环到当天,就退出
        if [ $bizdate == $curdate ]
        then
                break
        fi
done

脚本2.sh

#!/bin/bash

# 定义初始时间  测试最小时间2019-07-22   生产最小时间2019-06-03
start='2019-07-22'
end='2021-11-10'

# 因 start 取不到 end 值,最后输出范围是 [start,end) ,先执行:
  end=`date -d "1 day ${end}" +%Y-%m-%d`        # 日期自增

while [[ ${start} != ${end} ]]
do
echo    "=====开始日期为 $start===结束日期为 $end====="
  echo ${start}
# 给脚本传参
  bash /root/bin/t_xiaoke/sh/aa.sh ${start}
  start=`date -d "1 day ${start}" +%Y-%m-%d`    # 日期自增
# 循环到当天就退出
    if [ $start == $end ]
    then
        break
    fi
done

脚本3.sh

#!/bin/bash

if [ -n "$1" ] && [ -n "$2" ]
then
        startDate=$1
        endDate=$2
elif [ -z "$1" ] && [ -z "$2" ]
then
        startDate=`date -d '-1 day' +'%Y-%m-%d'`
        endDate=`date +'%Y-%m-%d'`
else
        exit
fi

# 定义sqoop导入函数
loop_function() {

# 获取指定日期数据
/root/bin/sms_platform/sqoop_import_sms_platform.sh "$startDate" "$endTime"

# 加载数据到dwd层
/root/bin/sms_platform/insert_dwd_sms_message_detail_inc_daily.sh "$startDate"

}



# 循环
for i in `seq 0 1000`
do      # 执行结束时间为开始时间加1天
		endTime=`date -d "${startDate} +1 day" "+%Y-%m-%d"`
		echo "===开始时间为$startDate,结束时间为$endTime==="
		# 函数调用
		loop_function
		# 开始时间加一天
        startDate=`date -d "${startDate} +1 day" "+%Y-%m-%d"`
#循环到开始时间等于循环结束时间,就退出
        if [ $startDate == $endDate ]
        then
                break
        fi
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值