shell脚本刷数

#!/bin/bash
start_date=20230611
end_date=20231204


# 设置为东8时区
TZ='Asia/Shanghai'
export TZ
print_info() {
  datetime=$(date "+%F %T")
  echo -e "${datetime} [INFO] : $1"
}


#设定重试次数
set_retry_time=3000000
#当前重试次数
curr_retry_time_e=0
curr_retry_time_f=0

#队列
queue="samsreport"
#sql 文件变量
#天表
# sql_file_1="1.sh"
#sql_file_2="dwd_item_sams_otb_dtl_di.sh"
#sql_file_3="dwd_item_sams_otb_status_info_df.sh"
#sql_file_4="dwd_item_sams_otb_dtl_allstatus_di.sh"
#sql_file_5="dwd_item_sams_otb_start_date_info_wi.sh"

#周表
# sql_file_10="1.sh"
# sql_file_11="dwd_item_sams_otb_sales_start_wf.sql"
# sql_file_12="dwd_item_sams_otb_stock_info_wi.sql"
sql_file_13="dev_ads_item_sams_otb_stage_sales_info_wi_1207.sql"


#创建文件夹
dir_e="log_e"
if [ ! -d "$dir_e" ];then
mkdir $dir_e
fi

#创建文件夹
dir_f="log_f"
if [ ! -d "$dir_f" ];then
mkdir $dir_f
fi

#sql -e 执行函数
execute_e_sql (){
curr_retry_time_e=0

#ge小于等于
while [[ $curr_retry_time_e -le $set_retry_time ]]
do
   print_info
   echo -e "$yestoday_str  $1  正在执行 " 
    hive --hiveconf tez.queue.name=$queue -e  $1  -hivevar yestoday_str=$2  >>log_e/$1 2>&1
    #echo "$yestoday_str  $1 $2"
    
    if [ $? -eq 0 ];then
            print_info
      echo "$yestoday_str  $1    成功 "
        break
    else  
            print_info
      echo "$yestoday_str  $1    失败 "
      curr_retry_time_e=$(($curr_retry_time_e+1))
    fi
done
curr_retry_time_e=0
}

#sql -f 执行函数
execute_file_sql (){
 
curr_retry_time_f=0

while [[ $curr_retry_time_f -le $set_retry_time ]]
do
    print_info
   echo -e "$yestoday_str  $1  正在执行 " 
   hive --hiveconf tez.queue.name=$queue -f  $1  -hivevar yestoday_str=$2 >>log_f/$1 2>&1
      #echo "$yestoday_str  $1   $2"
      
    if [ $? -eq 0 ];then
        print_info
      echo -e "$yestoday_str  $1  成功 " 
        break
        
    else  
      print_info
      echo -e "$yestoday_str  $1  失败 "
      curr_retry_time_f=$(($curr_retry_time_f+1))
    fi

done

curr_retry_time_f=0
}


# main 执行主体 ---------------------------------------------------------------------------------------------------------------------------------
#转成yyyy-MM-dd类型再比较
end_date=`date -d "$end_date"   +"%Y-%m-%d"`
start_date=`date -d "$start_date" +"%Y-%m-%d"`

while [[ $start_date < $end_date ]]

do


#循环跑数第一天start_date赋值到yestoday_str 参数
#yestoday_str=`date -d "$start_date" +"%Y-%m-%d"`
yestoday_str=$start_date

print_info
echo "$yestoday_str 开始执行天表"

#echo "$yestoday_str 开始执行天表--参数set_retry_time  $set_retry_time  参数curr_retry_time_f $curr_retry_time_f------- "


# execute_file_sql $sql_file_1  $yestoday_str
#execute_file_sql $sql_file_2  $yestoday_str
#execute_file_sql $sql_file_3  $yestoday_str


# 获取当前日期的星期几
week_day=$(date -d "$yestoday_str" +%w)

if [ "$week_day" -eq 0 ]; then
    echo "$yestoday_str 今天 是星期日,开始    执行周表------"
        
# execute_file_sql $sql_file_10  $yestoday_str
# execute_file_sql $sql_file_11  $yestoday_str
# execute_file_sql $sql_file_12  $yestoday_str
execute_file_sql $sql_file_13  $yestoday_str


else
    echo "$yestoday_str 今天不是星期日,不     执行周表------"
fi

#换行
echo -e "\n"
echo -e "\n"
#当天执行完成,
start_date=`date -d "+1 day $yestoday_str" +"%Y-%m-%d"`

done;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值