Comment récupérer le champ de la requête MySQL dans bash

Je voudrais obtenir uniquement la valeur d’une requête MySQL dans un script bash. Par exemple, l’exécution de 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?

Utilisez -s et -N :

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

A partir du 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. 

MODIFIER

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

Encore plus compact:

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

Essayer:

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

-B imprimera les résultats en utilisant l’onglet comme séparateur de colonne et

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

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