#!/bin/bash # # bashSQL: A BaSH SQL lib # usage: # # sql.conn -h -P -u -p # create a new sql session. Return session ID. # # sql.disconn # disconnect a sql session # # sql.query # do SQL query. Read SQL from stdin. # # sample usage: # # % sql.conn localhost 3306 root toor # 1003 # % echo 'show databases;' | sql.query 1003 # information_schema # mysql # ... # % sql.disconn 1003 function sql.conn { local id=$RANDOM mkfifo /tmp/bashsql.$id cat > /tmp/bashsql.$id &; echo $! > /tmp/bashsql.$id.pid cat /tmp/bashsql.$id | mysql $* & echo $id } function sql.disconn { [[ ! -e /tmp/bashsql.$1 ]] && return 1 echo 'quit' | sql.query $1 for tar in $(cat /tmp/bashsql.$1.pid) do kill $tar 2> /dev/null > /dev/null done rm /tmp/bashsql.$1 /tmp/bashsql.$1.* echo "killed $1" } function sql.query { [[ ! -e /tmp/bashsql.$1 ]] && return 1 cat > /tmp/bashsql.$1 }