shell循环etl跑历史数据

#!/bin/sh

if [ ! -z $1 ]
then
    file_name="$1"
else
    echo "输入执行文件路径!"
    exit
fi

if [ ! -z $2 ]
then
    start_date=`date --date="${2}" +%Y-%m-%d`
else
    start_date=`date -d'-1 day' +%Y-%m-%d`
fi

if [ ! -z $3 ]
then
    end_date=`date --date="${3}" +%Y-%m-%d`
else
    end_date=`date  +%Y-%m-%d`
fi

echo "start_date=$start_date"
echo "end_date=$end_date"

while [[ $start_date < $end_date  ]]
do
    dt=`date --date="${start_date}" +%Y%m%d`
    echo "执行日期:${dt}" 
    cmd="bash ${file_name} ${dt}"
    eval $cmd 
    start_date=`date -d "+1 day $start_date" +%Y-%m-%d`
done
动态执行脚步需传递参数
第一个参数执行脚步路径
第二个参数任务执行开始日期【默认是当前日期前一天】
第三个参数任务执行结束日期【默认是当前日期】
demo: sh run_etl.sh /home/hadoop/dy_run_etl/tesh_etl.sh [20170610] [20170615]

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...