Wie kann programmgesteuert geprüft werden, ob Datenbank und / oder Benutzer in einer PostgreSQL-Datenbank mit Bash vorhanden sind?

672
user3541631

Ich möchte ein Bash-Skript schreiben, das mehrere Benutzer und eine Datenbank erstellt.

  1. Zuerst möchte ich überprüfen, ob Benutzer existieren, also habe ich es versucht

    sudo -u postgres psql -c 'SELECT 1 FROM pg_roles WHERE rolename=$' 

    Wie erhalte ich einen Rückgabewert, den ich in einchecken kann if?

  2. Wie überprüfe ich, ob die Datenbank existiert?

  3. Wenn Postgres psqleinen Fehler haben, wie kann ich das Skript stoppen und den Fehler wiederholen ?

  4. Ich versuche, auf diese Weise eine neue Variable zu erstellen, A='$_dml'aber ich bekomme eine Fehlermeldung.

1

1 Antwort auf die Frage

1
jrogers63

Versuchen Sie vielleicht etwas in einem Bash-Skript:

#!/bin/bash set -e  read -p "Please enter the user name to search for: " VAR_USER  VALUE=$(psql -c "SELECT 1 FROM pg_roles WHERE rolename=$") echo "$VALUE" 

"set -e" bewirkt, dass das Skript bei einem Fehler beendet wird. Weitere Informationen finden Sie in dieser Antwort und den zugehörigen Einträgen. Es wird auch (bei meinen Tests mit mysql, da ich keine Postgres installiert habe) den Fehler angezeigt, durch den das Skript beendet wurde.

Wenn Sie eine andere als die Standarddatenbank verwenden, geben Sie diesen Datenbanknamen irgendwo / irgendwie im Skript an.