这样能获取到前面命令的返回值
sh a.sh | tee >>a.log
aa=${PIPESTATUS[0]}
if [ $aa -ne 0 ]
then
echo "aaaaaaaaaaaaaaaa"
fi
#!/bin/bash
source ./get_config.sh
source ./get_date.sh
source ./get_date.sh
#set -xv
#exec 1>${etlHome}/LOG/ODS/${data_date}/xxx.log 2>&1
#exec 1>${etlHome}/LOG/ODS/${data_date}/xxx.log 2>&1
# $1 为ods、bds $2为
#测试 传递参数
#etlSys="ods"
#etlJob="P_CRD_CC_COMM_STABILITY_SCORE_RES"
#etlSys="ods"
#etlJob="P_CRD_CC_COMM_STABILITY_SCORE_RES"
#发布时,参数为传递进来的
etlSys=$1
etlJob=$2
etldte=$3
etlSys=$1
etlJob=$2
etldte=$3
#传递近来的参数转大写
etlSys=${etlSys^^}
etlJob=${etlJob^^}
etlSys=${etlSys^^}
etlJob=${etlJob^^}
#传递近来的参数转小写
etlSysL=${etlSys,,}
etlJobL=${etlJob,,}
etlSysL=${etlSys,,}
etlJobL=${etlJob,,}
etlHome="/dw/workflow"
currentTime=$(date "+%G%m%d%H%M%S%N")
binPath="${etlHome}/APP/${etlSys}/${etlJob}/bin"
sqlPath="${etlHome}/APP/${etlSys}/${etlJob}/sql"
logFile="${etlHome}/LOG/${data_date}/${etlSys}_${etlJob}-${currentTime}.log"
currentTime=$(date "+%G%m%d%H%M%S%N")
binPath="${etlHome}/APP/${etlSys}/${etlJob}/bin"
sqlPath="${etlHome}/APP/${etlSys}/${etlJob}/sql"
logFile="${etlHome}/LOG/${data_date}/${etlSys}_${etlJob}-${currentTime}.log"
run_sql() {
#判断传入进来的第三个参数是否为null或者为yyyymmdd
#若为null,则跳过
#若为yyyymmdd,则把${data_date}替换为yyyymmdd
#若为其他,非日期且非null ,报错退出,提示输入日期参数错误
if [ -n "${etldte}" ]; then
if echo ${etldte} | grep -Eq "[0-9]{8}" && date -d ${etldte} +%Y%m%d > /dev/null 2>&1
then
data_date=`date -d ${etldte} +%Y%m%d`
echo "data_date:${data_date}"
else
echo "输入的日期格式不正确,应为yyyymmdd";
exit 2
fi
fi
if [ ! -d "${etlHome}/LOG/${data_date}" ]; then
mkdir ${etlHome}/LOG/${data_date}
fi
#
if [ ! -f "${sqlPath}/${etlJob}.sql" ]; then
echo "执行失败! 文件:${sqlPath}/${etlJob}.sql不存在"
exit 1
fi
sed "s/\${data_date}/${data_date}/g" ${sqlPath}/${etlJob}.sql > "${etlHome}/tmp/${etlSys}_${etlJob}.sql"
if [ $? != 0 ]
then
echo "sed exec Failed !"
exit 1
fi
${getBeeline} -f ${etlHome}/tmp/${etlSys}_${etlJob}.sql
if [ $? != 0 ]
then
echo "执行失败!"
exit 1
else
echo "执行成功!"
fi
}
#run_sql > ${logFile} 2>&1
run_sql | tee ${logFile}
rt=${PIPESTATUS[0]}
if [ ${rt} -ne 0 ]
then
echo "执行失败!"
exit 1
fi