Ошибка переменных Bash и MySQL - PullRequest
1 голос
/ 28 сентября 2011

У меня есть следующий скрипт:

#!/bin/sh    
Q=`</dev/urandom tr -dc A-Za-z0-9 | head -c30`
mysql -uusername -ppasword accounts -e "update forum set key='$Q' where id='1';"

Я должен добавить обратные тики (``) к "forum", "key" и "id", в противном случае он возвращает мне ошибку:

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 'key='xdindSG7hK9KaYgs9RISJNqrzmn4LJ' where id='1'' at line 1

Но если я добавлю обратные галочки, bash интерпретирует их как переменные.

Что мне делать?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Попробуйте ЗДЕСЬ документ:

#!/bin/sh    
Q=`</dev/urandom tr -dc A-Za-z0-9 | head -c30`
mysql -uusername -ppasword accounts <<HERE
    update forum set key='$Q' where id='1';
HERE

Попробуйте с

cat <<HERE
    update forum set key='$Q' where id='1';
HERE

Вывод:

обновить форум set key = 'fnPIOid15anEJ2a3zVL6I1wbRjAKk0' где id ='1';

1 голос
/ 28 сентября 2011

Переключение одинарных и двойных кавычек.Одинарные кавычки инструктируют bash игнорировать содержимое, и вы сможете добавлять свои обратные галочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...