Linux

檢查上一條命令的執行

  • April 20, 2019

我必須通過連接到 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 失敗,腳本中的狀態檢查塊正在通過“通過”塊而不是失敗塊。我該如何處理這種情況?

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

引用自:https://unix.stackexchange.com/questions/392667