Non so molto circa l'interfaccia della riga di comando di MySQL, ma supponendo che solo bisogno di aiuto con il colpire, si dovrebbe cercare di scambiare sia i comandi in giro in questo modo:
myvariable=$(echo "SELECT A, B, C FROM table_a" | mysql database -u $user -p$password)
che ECHOS la stringa in MySQL. In alternativa, si può essere più di fantasia e utilizzare alcune nuove bash-caratteristiche (la stringa) qui
myvariable=$(mysql database -u $user -p$password<<<"SELECT A, B, C FROM table_a")
conseguente la stessa cosa (supponendo che si sta utilizzando una versione recente di bash abbastanza), senza coinvolgere eco.
Si noti che la password -p $ non è un errore di battitura, ma è il modo in cui MySQL si aspetta che le password vengano immesse tramite la riga di comando (senza spazio tra l'opzione e il valore).
Si noti che myvariable conterrà tutto ciò che MySQL emette sullo standard output (di solito tutto tranne i messaggi di errore), comprese le intestazioni di tutte le colonne, i frame ASCII artistici e così via, che possono o meno essere ciò che si desidera.
EDIT:
Come è stato notato, sembra che vi sia un parametro -e
a MySQL, mi piacerebbe andare per quella, sicuramente.
Grazie, anche il comando mysql non mi piaceva il -p .. Avevo bisogno di usare --password = $ password. – imnotneo
Puoi anche aggiungere un file di configurazione (chiamato .my.cnf) alla tua cartella Inizio che inserirà automaticamente le tue opzioni. Ciò farebbe risparmiare un po 'di confusione nello script – Yitzchak
+1 di .my.cnf, in particolare per ottenere le password dagli script. L'opzione -N è utile per tagliare i nomi dei campi. – ErichBSchulz