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;
Avez-vous essayé de scapuler la double citation s et les citations simples autour du LOCAL_IP? –
Oui, j'ai, mais cela produit des erreurs avant de pouvoir faire quoi que ce soit sur la base de données. – adebasi