webentwicklung-frage-antwort-db.com.de

Überprüfen Sie den Rückkehrstatus des Befehls psql in Unix-Shell-Skripts

Ich verwende den Befehl psql zum Verbinden und Ausgeben einer Abfrage in der PostgreSQL-Datenbank. Kann mir jemand sagen, wie ich den Rückgabestatus der ausgeführten Abfrage im Shell-Skript überprüfen kann.

Ich habe den echo $?-Befehl verwendet, um den Status zu überprüfen, er gibt jedoch immer Null zurück.

Danke für die Hilfe.

17
Naveen Reddy CH

psql Rückkehrcode ist dokumentiert als :

STATUS BEENDEN
psql gibt 0 an die Shell zurück, wenn es normal beendet wurde, 1 bei einem schwerwiegenden Fehler. selbst auftritt (z. B. nicht genügend Arbeitsspeicher, Datei nicht gefunden), 2, wenn die Die Verbindung zum Server ist fehlgeschlagen und die Sitzung war nicht interaktiv. und 3, wenn in einem Skript ein Fehler aufgetreten ist und die Variable ON_ERROR_STOP war eingestellt.

Sie möchten wahrscheinlich nur ON_ERROR_STOP verwenden.

Fehler beim Testen und Melden an die Shell:

$ 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

Fehler wird ignoriert und nicht an die Shell gemeldet:

$ 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
30
Daniel Vérité

Wie hier erwähnt - können Sie diese Zeile auch oben in Ihrer SQL-Datei/Ihrem Skript einfügen:

\set ON_ERROR_STOP true
0
Marco Roy