nie wiem zbyt wiele o interfejsie wiersza poleceń MySQL, ale zakładając, trzeba tylko pomóc w walnąć, należy spróbować albo zamienić poleceń wokół tak:
myvariable=$(echo "SELECT A, B, C FROM table_a" | mysql database -u $user -p$password)
który Echos ciąg do MySQL. Albo, możesz być bardziej wyszukane i wykorzystywać nowe funkcje bash (tu ciąg)
myvariable=$(mysql database -u $user -p$password<<<"SELECT A, B, C FROM table_a")
skutkujących samo (zakładając że używasz wystarczająco najnowszej wersji bash), bez angażowania echo.
Należy pamiętać, że hasło -p $ nie jest literówką, ale jest sposobem w jaki MySQL spodziewa się wprowadzenia haseł za pomocą wiersza poleceń (bez spacji między opcją a wartością).
Zauważ, że myvariable będzie zawierał wszystko, co MySQL generuje na wyjściu standardowym (zwykle wszystko oprócz komunikatów o błędach), w tym wszystkie nagłówki kolumn, ramki ASCII-art i tak dalej, które mogą być lub nie być tym, co chcesz.
EDIT:
Jak już wspomniano, wydaje się być parametrem do MySQL -e
, pójdę do tej jednej, zdecydowanie.
Dzięki, komenda mysql również nie podobała się -p .. Potrzebowałem użyć --password = $ password. – imnotneo
Możesz również dodać plik konfiguracyjny (o nazwie .my.cnf) do swojego katalogu domowego, który automatycznie włączy opcje. To pozwoliłoby zaoszczędzić trochę zamieszania w twoim skrypcie – Yitzchak
+1 od .my.cnf - szczególnie po to, aby uzyskać hasła ze skryptów. Opcja -N jest przydatna do przycinania nazw pól. – ErichBSchulz