57 votes

Comment récupérer un champ du résultat d'une requête MySQL en bash ?

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

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

retours :

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

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

113voto

Dor Shemer Points 5669

Utilisez -s y -N :

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

De le manuel :

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

EDITAR

On dirait que -ss fonctionne aussi bien et est beaucoup plus facile à retenir.

8voto

Pratik Patil Points 1683

Encore plus compact :

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

3voto

corgi Points 197

Essayez :

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

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

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

1voto

Marcelo Amorim Points 156

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X