说明:
读取$HOME/shell_code/control/zw/下面的bst_bas_sqoop2hive_zw.txt和bst_agg_sqoop2hive_zw.txt,分别执行txt文件中的shell脚本,并输出日志到log下对应目录中
#!/bin/bash
# corntab执行时需要手动声明环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export PATH=$PATH:$JAVA_HOME/bin
date_cfg=$HOME/shell_code/config/date_config
root_dir_path=$HOME/shell_code/daily/
file_prefix=$HOME/shell_code/control/zw/
ctrl_file[0]=bst_bas_sqoop2hive_zw.txt
ctrl_file[1]=bst_agg_sqoop2hive_zw.txt
dir_type=zw
DATEPATTERN="#"
begin_date=$1
end_date=$2
# 从跑数日期控制文件中得到跑数时间
source $date_cfg
if [[ -z "${begin_date}" && -z "${end_date}" ]]
then
begin_date=${BEGIN_DATE}
end_date=${END_DATE}
fi
echo ${begin_date} ${end_date}
# 从配置文件中挨个读出表名
for file_name in ${ctrl_file[*]}
do
file_name=${file_prefix}${file_name}
while read LINE
do
# 判断是否被注释
if [[ ! ^${LINE} =~ ${DATEPATTERN} ]]
then
if [ -z "${LINE}" ]
then
continue
fi
line_val=${LINE}.sh
table_name=${line_val##*/}
log_path=$HOME/log/${begin_date}/${dir_type}
log_name=`echo ${table_name} | sed "s/\//_/g"`
log_file=${log_name}_${begin_date}.log
echo "日志文件名:${log_path}/${log_file}"
if [ ! -d "$logpath" ]
then
mkdir -p $log_path
fi
# 执行脚本
echo $root_dir_path${line_val}
bash $root_dir_path${line_val} ${begin_date} ${end_date} > $log_path/$log_file 2>&1
fi
done < ${file_name}
echo "$file_name ${begin_date} ${end_date} 执行完毕"
done
exit 0