shell读取sh脚本配置文件并执行文件中对应脚本


说明:

读取$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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM