Как вернуть значение от 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