Почему я получаю эту ошибку при попытке получить данные из базы данных MySQL с помощью скрипта bash в Linux? - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь получить адрес электронной почты из базы данных MySQL.

#!/bin/bash
MYSQLHOST="192.168.1.1"                                               
MYSQLDB="nuni"
MYSQLUSER="root"
MYSQLPASS="rootpass"
MYSQLOPTS="--user=${MYSQLUSER} --password=${MYSQLPASS} --host=${MYSQLHOST} ${MYSQLDB}"
EMAIL=echo "SELECT email FROM Edsrn WHERE userid = 1235" | mysql ${MYSQLOPTS}
echo "E-mail: $EMAIL"

Что с ним не так? Я говорю "команда не найдена". Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Я рекомендую использовать параметр -e для оценки операторов SQL.Это должно быть то, что вы ищете:

#!/bin/bash
MYSQLHOST="192.168.1.1"                                               
MYSQLDB="nuni"
MYSQLUSER="root"
MYSQLPASS="rootpass"
MYSQLOPTS="-s --user=${MYSQLUSER} --password=${MYSQLPASS} --host=${MYSQLHOST} ${MYSQLDB}  -e "
EMAIL=$(mysql ${MYSQLOPTS} "SELECT email FROM Edsrn WHERE userid = 1235" | tail -n 1)
echo "E-mail: $EMAIL"

Обратите внимание, что tail необходимо, поскольку вывод mysql выглядит следующим образом:

column
value
1 голос
/ 27 мая 2011

Он пытается запустить "SELECT email FROM Edsrn WHERE userid = 1235" с $EMAIL, установленным в "эхо".Если вы хотите, чтобы результат вашей команды был введен в $EMAIL, то вы ошиблись в синтаксисе.

EMAIL=$(echo "SELECT email FROM Edsrn WHERE userid = 1235" | mysql ${MYSQLOPTS})

Также, BASH FAQ, запись # 50 .

...