将 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。
我想将 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。