Bash 和 MySQL 变量错误

发布于 2024-12-07 04:06:37 字数 538 浏览 0 评论 0原文

我有以下脚本:

#!/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 会将它们解释为变量。

我应该怎么办?

I have the following script:

#!/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';"

I have to add back-ticks (``) to "forum", "key" and "id", otherwise it returns me an error:

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

But if I add the back-ticks, bash interprets them as variables.

What should I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扮仙女 2024-12-14 04:06:37

尝试此处文档:

#!/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

输出:

更新论坛集 key='fnPIOid15anEJ2a3zVL6I1wbRjAKk0' 其中 id='1';

Try a HERE document:

#!/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

Try with

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

Output:

update forum set key='fnPIOid15anEJ2a3zVL6I1wbRjAKk0' where id='1';

蹲在坟头点根烟 2024-12-14 04:06:37

交换单引号和双引号。单引号指示 bash 忽略内容,您将能够添加反引号。

Switch the single and double quotes. Single quotes instructs bash to ignore the contents and you will be able to add your back-ticks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文