将 psql 变量发送到 shell

Sending psql variable into shell

我想将 psql 中的变量发送到 shell 中,在那里用它做一些棘手的事情,然后再次在 psql 中使用结果。参见:

\set ENVIR `echo :HOST | cut -f2 -d-`
\echo :ENVIR

但是,psql 变量似乎没有像我期望的那样插入反引号:shell 的 echo :HOST 只给出 :HOST。请帮忙。

您需要使用 \setenv 将 psql 变量导出到 shell:

\set HOST 'the-host-name'
\setenv HOST :HOST
\set ENVIR `echo $HOST | cut -f2 -d-`
\echo :ENVIR

产生:

host

编辑

当然,您的示例可以使用 postgres 字符串函数完成,不需要 shelling out。