2013-05-14 184 views
3

我試圖在psql命令中插入bash變量作爲連接參數以及命令本身的變量時發瘋。下面的示例正常工作:在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;" 

現在我想通過一個變量,它是在特殊的配置文件保存到Exchange中的每個參數。

非工作示例:

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;" 

我試過幾個quotings,後引號和逃生斜線既可smhow它仍然是行不通的。 由於提前,knutella

+0

和t他錯誤你得到的是... – 2013-05-14 11:44:18

回答

2

用雙引號(「)。單引號(')不解釋裏面shell變量。

試試吧

echo '$USER' "$USER" 

man bash

+0

謝謝,這也適用於我現在工作正常。正如我在上面的評論中寫道的:...我的變量來源不正確和空。 – knutella 2013-05-14 13:18:38

3

這作品...大多數報價是不需要的:

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

謝謝你現在做的伎倆。實際上,我已經在第一次嘗試過了,但問題是,參數不是從配置文件中進行探測。 – knutella 2013-05-14 13:14:12