1

有一些东西是 Bash 不喜欢的。应该逃避什么以及如何逃避?

mysql --user=root --password=mypass vsftpd << EOF
GRANT ALL PRIVILEGES ON `MYUSERNAME\_%`.* TO 'MYUSERNAME'@'%';"
EOF

我收到以下错误:

-bash: MYUSERNAME_%: command not found ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* TO 'MYUSERNAME'@'%'' at line 1

4

1 回答 1

2

反引号执行命令替换(与 相同$())。尝试在外层使用单引号并为您的用户名和主机名使用双引号:

mysql --user=root --password=mypass vsftpd 'GRANT ALL PRIVILEGES ON `MYUSERNAME\_%`.* TO "MYUSERNAME"@"%";'

您可以在此处指示文档不要通过引用分隔符来扩展变量,但我不确定这是否也适用于命令替换:

mysql --user=root --password=mypass vsftpd << 'EOF'
GRANT ALL PRIVILEGES ON `MYUSERNAME\_%`.* TO 'MYUSERNAME'@'%';"
EOF
于 2013-08-26T07:52:20.970 回答