将Shell脚本的存储过程抛出异常返回给调用者

问题描述

我有一个Shell脚本A,它调用Shell脚本B,该脚本在其中的Isql调用存储过程。 Shell脚本B的存储过程中的异常必须扔回到原始Shell脚本A。任何想法如何做到这一点?

解决方法

@narasimhakulkami:在POSIX shell脚本中,抛出异常是什么意思?除了将kill用于一些可能被接收过程捕获的合适信号之外,没有可用的异常机制。

您可以请求异常捕获过程在环境变量中提供其自己的PID,然后对该PID进行kill,但是您当然不能使用此信号传达任何其他信息(例如确切的异常消息),无论如何这将是一个糟糕的设计。

,

这是解决方案:

iSQL > $output_file
status='cat $output_file'
if [$status== "Login Failed"]; then
echo "Login Failed error"
elif  [$status== "Permission Denied"]; then
echo "Permission Denied error"
else [$status== "Connection error"]; then
echo "Connection Denied Error"
fi

 Or

$status='grep "permission denied" $tmp.txt | sed 'g/ /d' | cut -d":" -f2'
echo $status