Sergey Scopin
Sergey Scopin

Reputation: 2245

Receive results of select in shell

Ok, I have such script

#!/bin/bash
keyOrPass=$1
intercom=$2
flat=$3
number=$4
mysql -ulogin -ppass db_name -e "select cli.codeGuestEmail, cli.codePrivateEmail, cliKey.rf_id, cliKey.emailNotification from mbus_clients as cli join mbusClientKeys as cliKey on cliKey.id_client=cli.id WHERE cli.flat=${flat} and cli.domophone=${intercom};";
php -q sendNotifications.php

It works fine, but I should pass some result fields from select into php arguments. Any ideas how to do it?

OUTPUT:

+----------------+------------------+------------+-------------------+ 
| codeGuestEmail | codePrivateEmail | rf_id      | emailNotification |
+----------------+------------------+------------+-------------------+
|              1 |                0 | 2774490192 |                 0 |
|              1 |                0 | 2774490193 |                 0 |
|              1 |                0 | 2774490194 |                 0 |
|              1 |                0 | 2774490195 |                 1 |
+----------------+------------------+------------+-------------------+

Upvotes: 0

Views: 54

Answers (1)

mysql is capable of generating output formatted differently. With the -B or --batch option, mysql produces the output with TAB as the column separator. The special characters in the fields are escaped (e.g. TAB is output as "\t") so you can use cut to extract fields. Many times in cases like this it's helpful to use the -N or --skip-column-names option as well, in order to remove column names from the output.

Upvotes: 1

Related Questions