以下のスクリプトのように、bash変数にスカラーpostgresql-valueを格納する方法は?
dbname="testlauf"
username="postgres"
vartest='psql -c -d $dbname -U $username -h localhost -p 5432 "SELECT gid FROM testtable WHERE aid='1';"'
echo "$vartest"
私はいくつかの異なる文章を試しましたが、何もうまくいかないようです。前もって感謝します。
引数の直前に_-c
_オプションを置きます-クエリ。追加の_-t
_オプションを使用してタプル値のみを取得することもできます。そしてもちろん、バッククォート(`)演算子を使用します。
_-X
_オプションを使用することもお勧めします。これは、_.psqlrc
_ファイルが列出力を無効にする_-A
_オプションだけでなく、冗長な出力を追加する場合があるためです(空白文字)。
_vartest=`psql -X -A -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT gid FROM testtable WHERE aid='1'"`
_
-tオプションまたは--tuples-onlyを使用すると、行のみが提供されるため、それらを配列変数に格納するのが簡単になります(クエリからの結果が複数の場合)
vartest =(`psql -t -d $dbname -U $username -c "SELECT gid FROM testtable WHERE aid='1';"`)
echo $vartest
例:
クエリ結果
ubuntu@ratnakri:~$ psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"
barman
barman2
配列変数にする
ubuntu@ratnakri:~$ RESULT=(`psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"`)
ubuntu@ratnakri:~$ echo ${RESULT[0]}
barman
ubuntu@ratnakri:~$ echo ${RESULT[1]}
barman2