Подтвердить что ты не робот

Как получить поле из результата запроса MySQL в bash

Я хотел бы получить только значение результата запроса MySQL в bash script. Например, выполните следующую команду:

mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"

возвращает:

+----+
| id |
+----+
| 0  |
+----+

Как я могу получить значение, возвращаемое в моем bash script?

4b9b3361

Ответ 1

Используйте -s и -N:

> id=`mysql -uroot -ppwd -s -N -e "SELECT id FROM nagios.host WHERE name='$host'"`
> echo $id
0

Из руководство:

- silent, -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 работает и намного легче запомнить.

Ответ 2

Еще более компактный:

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

Ответ 3

Try:

mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"

-B будет печатать результаты с помощью вкладки в качестве разделителя столбцов и

- column-names = 0 отключит заголовки.

Ответ 4

Я пробовал решения, но всегда получал пустой ответ.

В моем случае решение было:

#!/bin/sh

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

echo $FIELDVALUE