【发布时间】:2012-03-22 11:10:30
【问题描述】:
我只想在 bash 脚本中获取 MySQL 查询结果的值。例如运行以下命令:
mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
返回:
+----+
| id |
+----+
| 0 |
+----+
如何获取 bash 脚本中返回的值?
【问题讨论】:
我只想在 bash 脚本中获取 MySQL 查询结果的值。例如运行以下命令:
mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
返回:
+----+
| id |
+----+
| 0 |
+----+
如何获取 bash 脚本中返回的值?
【问题讨论】:
使用-s 和-N:
> id=`mysql -uroot -ppwd -s -N -e "SELECT id FROM nagios.host WHERE name='$host'"`
> echo $id
0
来自the manual:
--静默,-s
Silent mode. Produce less output. This option can be given multiple times to produce less and less output. This option results in nontabular output format and escaping of special characters. Escaping may be disabled by using raw mode; see the description for the --raw option.--跳过列名,-N
Do not write column names in results.
编辑
看起来-ss 也很好用,而且更容易记住。
【讨论】:
id=`mysql -uroot -ppwd -ss -e "SELECT id FROM nagios.host WHERE name='$host'" 2> /dev/null`
mysql -uroot -ppwd -ss -e "SELECT 'a','b'。那么 $1 的值应该是 "a" 和 $2 "b"。
更紧凑:
id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.host WHERE name=$host");
echo $id;
【讨论】:
试试:
mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
-B 将使用制表符作为列分隔符和
打印结果--column-names=0 将禁用标题。
【讨论】:
我尝试了解决方案,但总是收到空响应。
在我的情况下,解决方案是:
#!/bin/sh
FIELDVALUE=$(mysql -ss -N -e "SELECT field FROM db.table where fieldwhere = '$2'")
echo $FIELDVALUE
【讨论】: