Продолжение строки Bash для команды MySQL

0

Я пытаюсь очистить базу данных при выполнении некоторых тестов в сценарии 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>';'

Команда работает нормально, если я запускаю ее на одной строке.

  • 0
    @SeanBright SeanBright Это работает, спасибо! Итак, я думаю, мы всегда можем использовать неявное продолжение строки внутри строки?
Теги:

1 ответ

1

Обратная косая черта выходит из новой строки, но пробел в начале следующей строки по-прежнему действует как разделитель слов. Таким образом, команда становится эквивалентной:

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>';"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню