web-dev-qa-db-fra.com

Comment retourner une valeur de psql à bash et l'utiliser?

Supposons que j'ai créé une séquence en postgresql:

CREATE SEQUENCE my_seq;

Je stocke la ligne ci-dessous dans un fichier sql get_seq.sql

SELECT last_value FROM my_seq;

$Sudo psql -q -d database_bame -f get_seq.sql

Comment puis-je obtenir le numéro int retourné par SELECT dans bash et l'utiliser?

28
user494461

Vous pouvez capturer le résultat d'une commande en utilisant la syntaxe VAR = $ (commande):

VALUE=$(psql -qtAX -d database_name -f get_seq.sql)
echo $VALUE

Les options psql requises signifient:

-t uniquement Tuple

-A sortie non désalignée

-q silencieux

-X Ne pas exécuter le fichier .psqlrc

40

Essayer:

LAST_VALUE=`echo "SELECT last_value FROM my_seq;" | psql -qAt -d database_bame`
3
Lorenzo Marcon

Vous pouvez utiliser le $? variable dans Bash, ie. exécutez le psql, lisez sa valeur de retour à partir de la variable intégrée $? et agissez en conséquence:

#!/bin/bash

psql -q -d database_bame -f get_seq.sql  # >/dev/null we are only interested in return value
exit_value=$?                            # or you could just echo $? right after the psql
echo $exit_value                         # but storing it to $exit_value lasts longer

Les sorties:

0
0
James Brown