Oracleデータベースに接続してスクリプトで作業を実行する必要があります。データをダンプするためにシェルスクリプトで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のユーティリティ標準です。 0は「成功」を意味し、ブールテストの「真」の値でもあります。
したがって、スクリプトで次のように話すことができるはずです。
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
。