Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在psql命令中插入bash变量_Bash_Postgresql_Variables_Parameters_Psql - Fatal编程技术网

在psql命令中插入bash变量

在psql命令中插入bash变量,bash,postgresql,variables,parameters,psql,Bash,Postgresql,Variables,Parameters,Psql,当我试图在psql命令中插入bash变量作为连接参数以及命令本身的变量时,我简直疯了。以下示例正常工作: psql -U postgres -h localhost -p 5432 -c "CREATE DATABASE testdb WITH ENCODING='UTF8' OWNER=postgres TABLESPACE=pg_default TEMPLATE=template_postgis CONNECTION LIMIT=-1;" 现在我试图通过一个变量来交换每个参数,这个变量保

当我试图在psql命令中插入bash变量作为连接参数以及命令本身的变量时,我简直疯了。以下示例正常工作:

psql -U postgres -h localhost -p 5432 -c "CREATE DATABASE  testdb WITH ENCODING='UTF8' OWNER=postgres TABLESPACE=pg_default TEMPLATE=template_postgis CONNECTION LIMIT=-1;"
现在我试图通过一个变量来交换每个参数,这个变量保存在特殊的配置文件中

非工作示例:

dbserver=localhost
dbport=5432
dbowner=postgres
dbname=testdb
dbtemplate=template_postgis
dbtablespace=pg_default

 psql -U '$dbowner' -h '$dbserver' -p '$dbport' -c "CREATE DATABASE  '$dbname' WITH ENCODING='UTF8' OWNER='§dbowner' TABLESPACE='$dbtablespace' TEMPLATE='$dbtemplate'
CONNECTION LIMIT=-1;"
我已经尝试过多次引用、反引用和转义斜杠,但仍然无法奏效。 提前感谢,knutella使用双引号(“)。单引号(')不会解释内部的shell变量

试试看

 echo '$USER' "$USER"

请参见
manbash

这是有效的…大多数引用都不需要:

 psql -U $dbowner -h $dbserver -p $dbport -c "CREATE DATABASE  $dbname WITH ENCODING='UTF8' OWNER=$dbowner TABLESPACE=$dbtablespace TEMPLATE=$dbtemplate CONNECTION LIMIT=-1;"

您得到的错误是…谢谢,现在就可以了。事实上,我已经在第一次尝试过了,但问题是,参数是smhow,不可能从config-file中获取。谢谢,这对我来说现在也很好。正如我在上面的评论中所写:…我的变量来源不正确且为空。。