#!/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]