我们有一个 Teradata TPT 实用程序的包装脚本。包装器脚本非常简单,但问题是包装器的退出状态与实用程序的退出状态不同。在许多情况下,即使实用程序失败,脚本也会返回 0。我已将退出状态保存在一个单独的变量中,因为在退出之前需要完成一些步骤,但使用此变量的值退出似乎不起作用。或者即使日志清楚地指定了其他状态,即使在某些失败的情况下,实用程序也会返回状态 0?
更糟糕的是,这种行为是非常随机的,有时脚本会因实用程序的退出状态而失败。我想确定实用程序的退出状态是否存在问题。
该脚本通过 KSH 运行。包装脚本的最后一部分是:
tbuild -f $sql.tmp -j ${id}_$JOB >$out 2>&1
ret_code=$?
cd ${TWB_ROOT}/logs
logpath=`ls -t ${TWB_ROOT}/logs/${id}_${JOB}*.out |head -1`
logpath1=${logpath##*/}
logname=${logpath1%-*}
tlogview -l ${logpath} > /edw/$GROUP/tnl/jobs/$JOB/logs/tpt_logs/${logname}.log
###Mainting 3 tpt binary log files
if [ $ret_code -eq 0 ]
then
binout=$TPTLOGDIR/${logname}.dat
binout1=$TPTLOGDIR/${logname}.dat1
binout2=$TPTLOGDIR/${logname}.dat2
[ -f $binout1 ] && mv $binout1 $binout2
[ -f $binout ] && mv $binout $binout1
mv "$logpath" "/edw/${GROUP}/tnl/jobs/$JOB/logs/tpt_logs/${logname}.dat"
fi
rm -f $sql.tmp
echo ".exit"
exit $ret_code
提前感谢您的帮助和建议。