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