Я не очень разбираюсь в интерфейсе командной строки MySQL, но, предполагая, что вам нужна только помощь с обработкой ошибок, вам следует попробовать поменять местами команды следующим образом:
myvariable=$(echo "SELECT A, B, C FROM table_a" | mysql database -u $user -p$password)
, который выводит строку в MySQL. Или вы можете быть более изощренным и использовать некоторые новые функции bash (строка here)
myvariable=$(mysql database -u $user -p$password<<<"SELECT A, B, C FROM table_a")
В результате получается то же самое (при условии, что вы используете достаточно свежую версию bash), без использования echo.
Обратите внимание, что -p $ пароль не является опечаткой, но MySQL ожидает, что пароли будут вводиться через командную строку (без пробела между опцией и значением).
Обратите внимание, что myvariable будет содержать все, что MySQL выводит на стандартный вывод (обычно все, кроме сообщений об ошибках), включая любые и все заголовки столбцов, фреймы ASCII-art и т. Д., Что может или не может быть тем, что вы хотите.
EDIT:
Как уже отмечалось, в MySQL, похоже, есть параметр -e
, я бы определенно пошел на него.