如何在bash中从MySQL查询结果中获取字段

如何在bash中从MySQL查询结果中获取字段,mysql,bash,Mysql,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='$

我只想在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
发件人:

--沉默,-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
也很有效,而且更容易记忆。

试试:

mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
-B将使用tab作为列分隔符打印结果,并


--column names=0将禁用标题。

我尝试了解决方案,但始终收到空响应

就我而言,解决办法是:

#!/bin/sh

FIELDVALUE=$(mysql -ss -N -e "SELECT field FROM db.table where fieldwhere = '$2'")

echo $FIELDVALUE
更加紧凑:

id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.host WHERE name=$host");
echo $id;

与@corgi的答案类似,多个列将以制表符分隔。为了避免将错误作为输出,请重定向stderr:
id=`mysql-uroot-ppwd-ss-e“从nagios.host中选择id,其中name='$host'”2>/dev/null`
如何获取多个列?@Deckard$set
mysql-uroot-ppwd-ss-e选择“a”、“b”
。那么$1的值应该是“a”和$2“b”。谢谢,这有助于创建bash选项列表。这非常有用,因为它显示了如何返回结果,而不返回列名,这在尝试设置变量时非常有用。