将PostgreSQL中的值存储到Bash变量中。

3

我正在编写一个bash脚本,其中运行了psql查询,如下所示:

VAR="$(psql -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT value FROM table where query = 'query'")"

问题在于$VAR中的内容如下:

value ----------------- result (1 row)

我只需要$VAR中的result,以便在脚本的其余部分中使用。


2
这可能会对你有所帮助:https://dev59.com/oGkw5IYBdhLWcg3wY5jq - zedfoxus
这个回答解决了你的问题吗?将PostgreSQL结果存储在Bash变量中 - Duke
1个回答

1
VAR=`psql -t -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT value FROM table where query = 'query'"`

或者

VAR=$(psql -t -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT value FROM table where query = 'query'")
< p > -t 仅返回元组(数据)。

查看有关可用选项的psql文档。

编辑

我已经能够像这里建议的那样使用子shell:https://dev59.com/jmEi5IYBdhLWcg3whcri#21193276

psql -t -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT value FROM table where query = '`echo $VAR`'"

您是否知道,当我使用此方法时,类型可能会成为一个问题?我的意思是,我有以下代码:VAR="$(psql -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT value FROM table1 where query = 'query'")" psql -h prov-db-cl -p 5446 -d prov -U prov -c "SELECT * FROM table2 where query2 = '$VAR'"第二个查询无法正常工作,我确信VAR值存在于table2中,但它仍然没有找到任何结果。猜测一些类型问题,因为$VAR是整数,但在DB逻辑中被用作字符串。 - X3MBoy
1
@X3MBoy 你不能将变量扩展到单引号中。请参见https://dev59.com/jmEi5IYBdhLWcg3whcri。 - Luc M
@X3MBoy,请检查我的编辑,我已经成功使用了子shell :-) - Luc M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接