shell 中的 奇怪的*号,忘大侠解答

发布于 2022-10-15 10:17:45 字数 359 浏览 47 评论 0

#/bin/sh
user="root"
cmd="/usr/local/mysql-5.1.54/bin/mysql -uroot -p123456 -h192.168.1.124 -e \"select \* from mysql.user user='$user' limit 1\"";
eval $cmd
#---------结果--------------
ERROR at line 1: Unknown command '\*'.

上面的程序在ubuntu 10.04 server 上没有问题,但是在 ubuntu 10.10 和 rs 5上面就有问题。

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

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

发布评论

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

评论(8

赏烟花じ飞满天 2022-10-22 10:17:45

试试去掉 转移符试试

樱花落人离去 2022-10-22 10:17:45

试试去掉 转移符试试
chenbin200818 发表于 2011-04-12 20:29

# ls
a.sh  bin  mysql.sock  psql.lock  tmp_rs
# ./a.sh
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 'mysql.sock psql.lock tmp_rs from mysql.user user='root' limit 1' at line 1
#
#
#
# sh -x a.sh
+ user=root
+ cmd=/usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e "select * from mysql.user user='root' limit 1"
+ eval /usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e "select a.sh bin mysql.sock psql.lock tmp_rs from mysql.user user='root' limit 1"
+ /usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e select a.sh bin mysql.sock psql.lock tmp_rs from mysql.user user='root' limit 1
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 'mysql.sock psql.lock tmp_rs from mysql.user user='root' limit 1' at line 1
#

不转义的话,* 就是当前目录下的所有文件。

画中仙 2022-10-22 10:17:45

回复 1# songwubin007

    try: cmd="/usr/local/mysql-5.1.54/bin/mysql -uroot -p123456 -h192.168.1.124 -e \\\"select \* from mysql.user user='$user' limit 1\\\"";

回复  songwubin007

    try: cmd="/usr/local/mysql-5.1.54/bin/mysql -uroot -p123456 -h192.168.1 ...
blackold 发表于 2011-04-12 23:11

    + user=root
+ cmd=/usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e \"select \* from mysql.user where user='root' limit 1\"
+ eval /usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e \"select \* from mysql.user where user='root' limit 1\"
+ /usr/local/mysql-5.1.54/bin/mysql -ureadonly -p123456 -h192.168.1.153 -e "select * from mysql.user where user=root limit 1"
/usr/local/mysql-5.1.54/bin/mysql  Ver 14.14 Distrib 5.1.54, for unknown-linux-gnu (x86_64) using  EditLine wrapper
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Usage: /usr/local/mysql-5.1.54/bin/mysql [OPTIONS] [database]
  -?, --help          Displa

还是不行

沫雨熙 2022-10-22 10:17:45

本帖最后由 blackold 于 2011-04-12 23:41 编辑

回复 5# songwubin007

    是不是省了尾分号
   try: cmd="/usr/local/mysql-5.1.54/bin/mysql -uroot -p123456 -h192.168.1.124 -e \\\"select \* from mysql.user user='$user' limit 1\;\\\""

墨小墨 2022-10-22 10:17:45

mysql不太熟,但是这个sql不需要where的吗?

jJeQQOZ5 2022-10-22 10:17:45

跟7楼有同样的疑问

蓝色星空 2022-10-22 10:17:45

本帖最后由 dgww 于 2011-04-13 12:32 编辑

回复 7# oilz

   

取消\,然后加上where

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