Comment puis-je sortir cette ligne dans un fichier distant?

1

J'utilise un shell bash et j'essaie de trouver le bon moyen d'écrire ce qui suit:

ssh mysuer@remotehost 'echo "update user set url = \'localhost\' where url = \'mydomain.com\';" >> /tmp/db.sql'

Jusqu'à présent, ce qui précède ne fonctionne pas.

Après avoir tapé, entrez la ligne suivante est >comme si elle s'attend à ce que je ferme un devis ouvert quelque part. Que dois-je faire pour que cela

update user set url = 'localhost' where url = 'mydomain.com';

est la sortie dans le fichier distant?

Dave
la source
Doublure

Réponses:

1

Les guillemets simples ne peuvent pas être échappés, mais vous pouvez en finir avec l'existant, imprimer apostrophe ( \') et ouvrir le nouveau.

Voici la bonne syntaxe:

ssh user@host 'echo "update user set url = '\''localhost'\'' where url = '\''mydomain.com'\'';" >> /tmp/db.sql'
Kenorb
la source
0

Cela devrait fonctionner si vous supprimez les barres obliques inverses des guillemets simples à l'intérieur de l'instruction mysql:

ssh mysuer@remotehost 'echo "update user set url = 'localhost' where url = 'mydomain.com';" >> /tmp/db.sql'
Gogoud
la source
Ça ne marche pas. Au lieu de cela, ce qui est omniprésent dans le fichier distant est "update user set url = localhost où url = mydomain.com;". Notez que les guillemets simples manquent autour des mots-clés où je les veux.
Dave
ok, essayez de changer les guillemets simples à l'intérieur de l'instruction mysql pour éviter les guillemets doubles.
Gogoud
voici une autre façon:ssh mysuer@remotehost 'echo "update user set url = '"'localhost'"' where url = '"'mydomain.com'"';"'
Gogoud