在psql-command中插入bash-variables

时间:2013-05-14 11:40:23

标签: 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;"

现在我正在尝试通过变量交换每个参数,该变量保存在特殊的配置文件中。

非工作示例:

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

2 个答案:

答案 0 :(得分:3)

这有效...大多数引号都不需要:

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

答案 1 :(得分:2)

使用双引号(“)。单引号(')不解释其中的shell变量。

试试吧

 echo '$USER' "$USER"

请参阅man bash