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


1

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

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

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

ヒットした後、次の行を入力すると、>どこかでオープンクォートを閉じることが予想されます。これを行うには何をする必要がありますか

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'

0

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

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

それは機能しません。代わりに、リモートファイルへの出力は「ユーザーセットの更新url = localhost where url = mydomain.com;」です。必要なキーワードの周りに一重引用符がないことに注意してください。
デイブ

OK、mysqlステートメント内の単一引用符をエスケープされた二重引用符に変更してみてください。
-gogoud

別の方法をssh mysuer@remotehost 'echo "update user set url = '"'localhost'"' where url = '"'mydomain.com'"';"'
次に示します。– gogoud
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.