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?
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.
Encore plus compact:
id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.Host WHERE name=$Host");
echo $id;
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
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.