BASH question

linux-5ZoueyuiTZhBDgjK7y7TUQ at public.gmane.org linux-5ZoueyuiTZhBDgjK7y7TUQ at public.gmane.org
Fri Dec 14 23:40:23 UTC 2007


Hey all,

  I've been banging my head against something all day that *should* be
easy/obvious, but obviously not to me...

I've got a task (insane, yes, but...) to write a sample script in BASH to
call do a mysql database call and parse the results. I've build the call
and can get the results showing on the screen, but I've been stumped dumb
on how to feed the results, one line at a time, into an array.

  Any tips/suggestions/helpful whacks up-side the head are much appreciated!

Madi

PS - Here is what I've got (stripped down) so far...

#!/bin/bash

# Variables...
MYSQLBIN='/usr/bin/mysql';
DBNAME='testdb';
DBUSER='user';
DBPASSWD='secret';
DBPORT=''
DBHOST='localhost'

# This creates the connection string that will be use in a similar way
# that the 'dbh' database handle was used in the Perl and Ruby sample
# scripts.
# '-b' disables the bell (this is a script, so useless)
# '--disable-pager' makes sure the output doesn't get interrupted.
# '-Bs' is 'silent' output (s) without tables headers (B), columns are
#       tab-deliminated.
# You may want to look at '-E' for "vertical" output in some cases.
# You may want to look at '-X' for XML-formatted output; looks nice!
DBH="mysql -Bs -b --disable-pager -D ${DBNAME} -u ${DBUSER} -p${DBPASSWD}";
if [ "${DBPORT}" != "" ]; then
{
        # Append the port command if defined.
        DBH="${DBH} -P ${DBPORT}"
}
fi
if [ "${DBHOST}" != "" ]; then
{
        # Append the host commend if defined.
        DBH="${DBH} -h ${DBHOST}";
}
fi
echo "SQL connection command: [${DBH}]";

# Our sample query
QUERY='SELECT foo, bar, baz FROM testtable LIMIT 5;';
echo "Query: [${QUERY}]"

# Execute the query.
echo "Calling: [${DBH} -e\"${QUERY}\"]";
echo "/- Begin DB results output -=-=-=-=-"
${DBH} -e"${QUERY}";
echo "\\- End DB results output -=-=-=-=-=-"
exit;

--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list