如何像下面的脚本一样在 bash 变量上处理标量 postgresql 值?
dbname="testlauf"
username="postgres"
vartest='psql -c -d $dbname -U $username -h localhost -p 5432 "SELECT gid FROM testtable WHERE aid='1';"'
echo "$vartest"
我尝试了几种不同的作品,但似乎没有任何效果。提前致谢。
如何像下面的脚本一样在 bash 变量上处理标量 postgresql 值?
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
禁用列对齐(空格)的选项。
要跳过 NOTICE 或其他附加消息,请包含该-q
标志。
vartest=`psql -d $db -U $user -AXqtc "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