2017-07-13 68 views
0

我想更新我的數據庫在VW中運行的一列(使用Vagrant)與主機的IP。爲什麼vagrant ssh -c在命令中忽略單引號?

要做到這一點,我想用一個bash腳本:

LOCAL_IP=$(ipconfig getifaddr en0) 
SQL="vagrant ssh -c 'psql -U user -d mydatabase -h localhost -c \"update mytable set mycolumn = '$LOCAL_IP';\"'" 
eval $SQL 

但我得到這個錯誤:

ERROR: syntax error at or near ".123" 
LINE 1: update mytable set mycolumn = 123.123.123.123; 

的SQL vriable的輸出繼電器:

echo $SQL 
vagrant ssh -c 'psql -U user -d mydatabase -h localhost -c "update mytable set mycolumn = '123.123.123.123';"' 

當我在vm中調用了從echo $SQL開始的psql命令,一切正常,但我沒有主機ip。

vagrant ssh 
psql -U user -d mydatabase -h localhost -c "update mytable set mycolumn = '123.123.123.123';" 

它看起來像vagrant ssh -c命令將刪除IP的單引號。有任何想法嗎?

UPDATE

最簡單的方式重現我的問題:

$ vagrant ssh -c 'echo "update table set column = 'test';" > bla.sql' 
$ vagrant ssh 
$ cat bla.sql 
update table set column = test; 
+0

有你嘗試了雙引號s和LOCAL_IP的簡單引號? –

+0

是的,我有,但它可以在數據庫上執行任何操作之前產生錯誤。 – adebasi

回答