Linux
檢查上一條命令的執行
我必須通過連接到 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
。