Я использую оболочку 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'