在Unix中捕获并检查bteq返回代码

时间:2014-09-03 13:19:32

标签: unix teradata return-code

我正在开发一个脚本,该脚本又调用其他几个脚本(.ksh)。而且基本上当其中一个失败时,他们不应该进入下一个。所以我尝试在一个涉及bteq(基本Teradata查询)会话的脚本中检查返回代码。请在下面找到方案:

 bteq <<EOF!
 .run file ${TGTRUNFILEN} ;
 .maxerror 1;
 .set width 245;
 ...
 ...
 sel * from table ;
 .if ACTIVITYCOUNT <> 0 then .GOTO QUIT
 .os mail command "error msg"
 exit 1;
 .LABEL QUIT
 .quit;
EOF!
echo $rcode
rcode=$?    
if [[ $rcode != 0 ]]
     then
         echo "$0: Insufficient Perm Space : username " >&2
         exit 4
fi

在这里,脚本失败,我可以看到日志说失败,返回码为1,但为什么不是文本&#34; $ 0:Perm Space不足:用户名&#34;显示。我认为它退出整个脚本,但我需要以某种方式修复它。 有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

嗨非常感谢您的回应。我找到了解决这个问题的方法。我刚刚添加了'set'命令。

 set +e
 bteq <<EOF!
 ...
 ...
 EOF!
 rcode=$?
 set -e

对我来说很好。

干杯