How to fetch field from MySQL query result in bash
I would like to get only the value of a MySQL query result in a bash script. For example the running the following command:
mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
returns:
+----+
| id |
+----+
| 0 |
+----+
How can I fetch the value returned in my bash script?
Use -s
and -N
:
> id=`mysql -uroot -ppwd -s -N -e "SELECT id FROM nagios.host WHERE name='$host'"`
> echo $id
0
From the manual:
--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.
EDIT
Looks like -ss
works as well and much easier to remember.
Even More Compact:
id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.host WHERE name=$host");
echo $id;
Try:
mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
-B will print results using tab as the column separator and
--column-names=0 will disable the headers.