【shell】shell中循环连续日期

 菜鸡一只,今天快速记录下shell循环连续日期!

因为毕竟常遇见重跑的任务,然后启动的spark任务的入口需要传入重跑的日期,如果日期毕竟少,其实可以这么写:

 

for date in  20191015  20191016  20191017  
do
spark-submit \
--master yarn \
--queue xxx \
--name xxx-${date} \
--class xxx \
--deploy-mode client \
--num-executors xx\
--executor-memory xxG \
--driver-memory XXG \
--executor-cores XX \
--driver-java-options "-Dlog4j.configuration=file:///XXX/log4j.properties" \
/XXX/XXX.jar all ${date} ${date} XX
echo ${date} ok...
done 

 但是如果日期很多的话,而且是连续的,我们就需要写个循环来处理,否则手写日期还是比较麻烦的!

如下shell可以获得连续的日期:

##调用的时候, sh 脚本名称 20191101 20191203


startdate=`date -d "+0 day $1" +%Y%m%d`
enddate=`date -d "+0 day $2" +%Y%m%d`
 
while [[ $startdate -le $enddate ]]
do
date=$startdate
##做日期格式的转换,如果没有转换就不需要了
startdateother=`date -d "+0 day $date" +%Y-%m-%d`
dateother=$startdateother
echo "$dateother"
##记得当前循环结束,需要把开始日期+1
startdate=`date -d "+1 day $date" +%Y%m%d`
startdateother=`date -d "+1 day $date" +%Y-%m-%d`

如上的shell脚本是从https://www.cnblogs.com/zhzhang/p/9395843.html(作者:zhzhang)copy来的

所以我的脚本只需要改成这样

#可以写死时间,或者从外部传入
startdate=20191101
enddate=20191123

while [[ $startdate -le $enddate ]]
do
spark-submit \
--master yarn \
--queue xxx \
--name xxx-${startdate} \
--class xxx \
--deploy-mode client \
--num-executors xx\
--executor-memory xxG \
--driver-memory XXG \
--executor-cores XX \
--driver-java-options "-Dlog4j.configuration=file:///XXX/log4j.properties" \
/XXX/XXX.jar all ${startdate} ${startdate} XX
echo ${startdate} ok...
startdate=`date -d "+1 day $startdate" +%Y%m%d`
done 

嗯,就这么多,是一篇工具型的文章~

菜鸡一只,下次见拜拜~

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值