Я пытаюсь очистить базу данных при выполнении некоторых тестов в сценарии bash, и следующая попытка продолжения строки не работает:
mysql -e "DELETE FROM test.users WHERE username ="\
"'<a href=https://localhost>XSS Hack!</a>';"
Я получаю ошибку
ERROR 1044 (42000): Access denied for user 'web'@'localhost' to database ''<a href=https://localhost>XSS Hack!</a>';'
Команда работает нормально, если я запускаю ее на одной строке.
Обратная косая черта выходит из новой строки, но пробел в начале следующей строки по-прежнему действует как разделитель слов. Таким образом, команда становится эквивалентной:
mysql -e "DELETE FROM test.users WHERE username =" "'<a href=https://localhost>XSS Hack!</a>';"
Если вы заканчиваете строку в середине строки, вам не нужно скрывать новую строку. MySQL также не против новых строк в запросах. Поэтому вы можете просто написать:
mysql -e "DELETE FROM test.users WHERE username =
'<a href=https://localhost>XSS Hack!</a>';"