Как вернуть значение от psql до bash и использовать его?

Предположим, что я создал последовательность в postgresql:

CREATE SEQUENCE my_seq;

Я храню строку ниже в файле sql get_seq.sql

SELECT last_value FROM my_seq;

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

Как получить номер int, возвращаемый SELECT, в bash и использовать его?

Ответ 1

Вы можете записать результат команды с помощью синтаксиса VAR = $(команда):

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

Необходимые параметры psql означают:

-t только кортеж

-A вывод не выровненный

-q quiet

-X Не запускать файл .psqlrc

Ответ 2

Try:

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

Ответ 3

Вы могли бы использовать $? переменная в Bash, т.е. запустить psql, прочитать его возвращаемое значение из встроенной переменной $? и действовать соответственно:

#!/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

Выходы:

0