この行をリモート ファイルに出力するにはどうすればよいですか?

この行をリモート ファイルに出力するにはどうすればよいですか?

私は bash シェルを使用しており、次のように記述する正しい方法を見つけようとしています。

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

今のところ上記は機能していません。

Enterキーを押すと、次の行は、>どこかで開いた引用符を閉じることを期待しているようです。これを実行するにはどうすればいいでしょうか?

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

リモートファイルに出力されますか?

答え1

一重引用符はエスケープできませんが、既存の引用符を終了し、アポストロフィ ( \') を出力して新しい引用符を開くことはできます。

正しい構文は次のとおりです。

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

答え2

mysql ステートメント内の一重引用符からバックスラッシュを削除すると動作するはずです。

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

関連情報