web-dev-qa-db-fra.com

Comment récupérer un champ depuis le résultat d'une requête MySQL dans bash

Je voudrais obtenir uniquement la valeur d'un résultat de requête MySQL dans un script bash. Par exemple, exécuter la commande suivante:

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

résultats:

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

Comment puis-je récupérer la valeur renvoyée dans mon script bash?

52
Nayish

Utilisation -s et -N:

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

De le manuel :

--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.

--skip-column-names, -N

   Do not write column names in results.

[~ # ~] éditer [~ # ~]

Ressemble à -ss fonctionne aussi et beaucoup plus facile à retenir.

104
Dor Shemer

Encore plus compact:

id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.Host WHERE name=$Host");
echo $id;
8
Pratik Patil

J'ai essayé les solutions mais j'ai toujours reçu une réponse vide.

Dans mon cas, la solution était:

#!/bin/sh

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

echo $FIELDVALUE
1
Marcelo Amorim

Essayer:

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

-B imprimera les résultats en utilisant tab comme séparateur de colonne et

--column-names = 0 désactive les en-têtes.

1
Finbar Crago