2015-02-11 13 views
9

Supponiamo che ho creato una sequenza in PostgreSQL:Come restituire un valore da psql a bash e usarlo?

CREATE SEQUENCE my_seq; 

devo conservare la linea di seguito in un file sql get_seq.sql

SELECT last_value FROM my_seq; 

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

Come faccio ad avere il numero int restituito da SELECT in bash e l'uso vero?

risposta

15

È possibile catturare il risultato di un comando utilizzando il = (comando) VAR $ sintassi:

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

Le opzioni psql richieste significano:

solo -t tupla

-A uscita non allineata

-q tranquilla

-X Non eseguire .psqlrc presentare

+0

@ eric-Leschinski, come mai si aggiunge l'opzione '-X'? Penso che questa opzione non sia necessaria in questo caso. –

+0

Il file '~/.psqlrc' esegue operazioni al login del database che riversano il rumore sull'output che è catturato nella variabile 'VALUE', quel rumore è stato rimosso con l'opzione -X. –

+0

ok, questo era il tuo caso, ma è generalmente valido? Il file psqlrc potrebbe anche eseguire operazioni necessarie per l'esecuzione della query –

1

Prova:

LAST_VALUE=`echo "SELECT last_value FROM my_seq;" | psql -qAt -d database_bame` 
Problemi correlati