我正在尝试在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 :(得分: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>';"