2017-07-13 3 views
0

Je veux mettre à jour une colonne de ma base de données fonctionnant dans un VW (en utilisant Vagrant) avec l'adresse IP de l'hôte.Pourquoi le ssh -c de vagrant ignore-t-il les guillemets simples dans la commande?

Pour ce faire, je veux utiliser un script 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 

Mais je reçois cette erreur:

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

Le ouput du vriable SQL:

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

Lorsque J'appelle la commande psql de echo $SQL dans le vm tout va bien, mais je n'ai pas l'IP hôte.

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

Il ressemble à la commande vagrant ssh -c supprimerait les guillemets simples autour de la propriété intellectuelle. Des idées?

MISE À JOUR

manière la plus simple de reproduire mon problème:

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

Avez-vous essayé de scapuler la double citation s et les citations simples autour du LOCAL_IP? –

+0

Oui, j'ai, mais cela produit des erreurs avant de pouvoir faire quoi que ce soit sur la base de données. – adebasi

Répondre