mysql语句的用户输入

mysql语句的用户输入,mysql,bash,Mysql,Bash,我有一个bash脚本,我想用它从数据库中提取一个IP地址。我似乎无法得到1美元来填充 命令是:./goto.sh2010 我希望它采取2010年和搜索数据库为它 goto.sh: #!/bin/bash ip=`mysql -Ns wksips -e 'SELECT IP FROM ips WHERE ID LIKE '%'''$1''';` echo $ip 我有%符号,因为所有单元都以wks开始,例如wks2010 我尝试过改变引号,但在mysql中运行时仍然失败 ++mysql-Ns

我有一个bash脚本,我想用它从数据库中提取一个IP地址。我似乎无法得到1美元来填充

命令是:./goto.sh2010

我希望它采取2010年和搜索数据库为它

goto.sh:

#!/bin/bash
ip=`mysql -Ns wksips -e 'SELECT IP FROM ips WHERE ID LIKE '%'''$1''';`

echo $ip
我有%符号,因为所有单元都以wks开始,例如wks2010

我尝试过改变引号,但在mysql中运行时仍然失败

++mysql-Ns wksips-e“从ID为%$1的IP中选择IP” 第1行出现错误1064(42000):SQL语法中有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行“%$1”附近要使用的正确语法


感谢您的帮助。

我会这样写:

ip=$(mysql -Ns wksips -e "SELECT IP FROM ips WHERE ID LIKE '%$1'")
在shell参数级别使用双引号,这允许在双引号字符串中展开变量,如
$1

然后在SQL语法中仅使用单引号分隔字符串文字


对于shell中的命令替换,我更喜欢
$(…)
,而不是反勾号。使用
$(…)
非常好,因为如果命令本身需要一些命令替换,可以继续嵌套这些结构。用背刻度做同样的事情需要反斜杠,这让人恼火。

效果很好。感谢您花时间解释引号和括号的用法。