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



