web-dev-qa-db-ja.com

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

SELECTによって返されたint番号をbashに取得して使用するにはどうすればよいですか?

28
user494461

VAR = $(command)構文を使用して、コマンドの結果をキャプチャできます。

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

必要なpsqlオプションの意味は次のとおりです。

-tタプルのみ

-A出力は整列されていません

-q静か

-X .psqlrcファイルを実行しない

試してください:

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

つまり、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
0
James Brown