我想用主机的IP更新在VW中运行的数据库列(使用Vagrant
)。
为此,我想使用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周围的单引号。有什么想法吗?
更新
重现问题的最简单方法:
$ vagrant ssh -c 'echo "update table set column = 'test';" > bla.sql'
$ vagrant ssh
$ cat bla.sql
update table set column = test;
答案 0 :(得分:1)
我在这里找到了解决方案: https://stackoverflow.com/a/20498919/5902456
现在看起来像这样:
SQL="vagrant ssh -c 'psql -U user -d mydatabase -h localhost -c \"update mytable set mycolumn = '\''$LOCAL_IP'\'';\"'"