前のコマンドの実行を確認してください。

前のコマンドの実行を確認してください。

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

おすすめ記事