Как вывести эту строку в удаленный файл?
Я использую оболочку 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';
выводится в удаленный файл?
2 ответа
Решение
Одиночные кавычки не могут быть экранированы, но вы можете закончить существующую, напечатать апостроф (\'
) и откройте новый.
Вот правильный синтаксис:
ssh user@host 'echo "update user set url = '\''localhost'\'' where url = '\''mydomain.com'\'';" >> /tmp/db.sql'
Это должно работать, если вы удаляете обратную косую черту из одинарных кавычек внутри оператора mysql:
ssh mysuer@remotehost 'echo "update user set url = 'localhost' where url = 'mydomain.com';" >> /tmp/db.sql'