MySQL命令的Bash字符串继续

时间:2018-07-12 19:53:04

标签: mysql bash

我正在尝试在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>';'

如果我在单行上运行该命令,它将正常工作。

1 个答案:

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