Psqlコマンドを使用して、postgreSQLデータベースに接続してクエリを発行しています。シェルスクリプトで実行されたクエリの戻り状態を確認する方法を教えてください。
利用した echo $?
コマンドはステータスをチェックしますが、常にゼロを返します。
助けてくれてありがとう。
psql
リターンコード ドキュメントに記載 :
終了ステータス
psqlは、正常に終了した場合はシェルに0を返し、それ自体の致命的なエラーが発生した場合は1(メモリ不足、ファイルが見つからないなど)、2インタラクティブ、およびスクリプトでエラーが発生し、変数ON_ERROR_STOPが設定された場合は3。
おそらくON_ERROR_STOPを使用するだけです。
テストの失敗とシェルへの報告の失敗:
$ psql -d test -v "ON_ERROR_STOP=1" <<EOF
select error;
select 'OK';
EOF
ERROR: column "error" does not exist
LINE 1: select error;
$ echo $?
3
失敗は無視され、シェルに報告されません:
$ psql -d test <<EOF
select error;
select 'OK';
EOF
ERROR: column "error" does not exist
LINE 1: select error;
^
?column?
----------
OK
(1 row)
$ echo $?
0
here で述べたように、SQLファイル/スクリプトの先頭に次の行を追加することもできます。
\set ON_ERROR_STOP true