在Unix中捕获并检查bteq返回代码
我正在开发一个脚本,它依次调用其他几个脚本(.ksh)。基本上,当其中一个失败时,他们不应该继续下一个。因此,我尝试在一个涉及在Unix中捕获并检查bteq返回代码,unix,teradata,return-code,Unix,Teradata,Return Code,我正在开发一个脚本,它依次调用其他几个脚本(.ksh)。基本上,当其中一个失败时,他们不应该继续下一个。因此,我尝试在一个涉及bteq(基本Teradata查询)会话的脚本中检查返回代码。请查看以下场景: bteq <<EOF! .run file ${TGTRUNFILEN} ; .maxerror 1; .set width 245; ... ... sel * from table ; .if ACTIVITYCOUNT <> 0 then .GOT
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
bteq您好,非常感谢您的回复。我找到了克服这个问题的方法。我刚刚添加了这样的“set”命令
set +e
bteq <<EOF!
...
...
EOF!
rcode=$?
set -e
set+e
b如果在if
测试之前echo$rcode
会发生什么:值是否为0?bteq
是否实际按需以非零状态退出?即使giveecho$rcode
,也不会发生任何事情。在exit
或quit
语句之后,我看不到任何内容。我现在完全不知道。因为您截断了脚本的顶部,我们无法看到here文档行。请加上这个。它应该包含这样的内容:bteq谢谢Jon。但是我检查过了,没有空格。我已经在上面添加了here文档行。我没有看到任何错误。仍然不清楚我遗漏了什么。在bteq
之前的顶部有一个后引号,在fi
之后的底部有一个单引号;我假设这些并没有真正出现在你的真实脚本中,因为它们使你的脚本在语法上不正确。如果它们都是反引号,那就意味着什么——但可能不是你想要的。