2013-08-26 2 views
1

Есть что-то, что Bash не нравится. Чего следует избегать и как?Bash экранирование (MySQL ГРАНТ ВСЕ ПРИВИЛЕГИИ не работает)

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

ответ

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 
+0

Извините, но ни одна из этих работ :(Благодарим вас за – user1281991

+0

@ user1281991:. Я просто попытался второй, который определенно работает после моего редактирования, то первый вариант должен работать тоже (обратите внимание на предложение) – knittl

+0

Да, спасибо. Первый работает для меня, если я делаю -e'GRANT ALL (и т. д.) '.. THX – user1281991

Смежные вопросы