Как получить поле из результата запроса MySQL в bash
Я хотел бы получить только значение результата запроса MySQL в bash script. Например, выполните следующую команду:
mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
возвращает:
+----+
| id |
+----+
| 0 |
+----+
Как я могу получить значение, возвращаемое в моем bash script?
Ответы
Ответ 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