用户输入mysql语句

时间:2018-02-05 21:25:21

标签: mysql bash

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

命令是:./ goto.sh 2010。

我希望它能够占据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' SELECT IP FROM ips WHERE ID LIKE%$ 1' 第1行的错误1064(42000):SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以获得在'%$ 1'附近使用的正确语法。在第1行

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我会这样写:

ip=$(mysql -Ns wksips -e "SELECT IP FROM ips WHERE ID LIKE '%$1'")

在shell参数级别使用双引号,这允许在双引号字符串中扩展$1之类的变量。

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

我更喜欢$(...)而不是back-ticks来替换shell中的命令。使用$(...)非常棒,因为如果命令本身需要一些命令替换,您可以根据需要继续嵌套这些结构。使用反斜杠做同样的事情需要反斜杠,这会令人抓狂。