检查上一条命令的执行情况

检查上一条命令的执行情况

我必须通过连接到 oracle 数据库来在脚本中执行操作。我试图在 shell 脚本中使用 expdp 命令来转储数据。

Vi ban.sh 

 expdp hr/oracle@oracle table=man   directory =ban dumpfile=man.dmp 
If [ $# -eq 0 ];then
  echo 'fail'
fi
If [ $# -eq 1 ];then
  echo 'pass'
fi 

在上面的脚本中,如果表名给出错误,那么 oracle expdp 会失败,脚本中的状态检查块会通过“pass”块,但不会通过失败块。我该如何处理这种情况?

答案1

如果满足以下条件,实用expdp程序将以零退出状态退出:

导出或导入作业已成功完成。如果有错误,则不会将错误显示到输出设备或记录在日志文件中。 [参考:数据泵退出代码]。

否则它将具有非零退出状态。这是 Unix 上实用程序的标准。零意味着“成功”,它也是布尔测试中的“真”值。

因此,在您的脚本中,您应该能够说

if expdp ...other options...; then
   echo 'Success'
else
   echo 'Failure'
fi

这意味着您在代码中进行了向后的测试。

如果你想实际显示退出代码:

expdp ...other options...
code=$?

echo "Exit code is $code"

if [ "$code" -eq 0 ]; then
   echo 'Success'
else
   echo 'Failure'
fi

由于echo会发生变化$?,因此您需要在使用后立即将其值保存到新变量中expdp

相关内容