#mysql #linux #bash #database-connection
#mysql #linux #bash #подключение к базе данных
Вопрос:
Я пытаюсь получить адрес электронной почты из базы данных 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"
Что с этим не так? Я говорю «команда не найдена». Пожалуйста, помогите!
Ответ №1:
Я рекомендую использовать -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
Ответ №2:
Он пытается запуститься, "SELECT email FROM Edsrn WHERE userid = 1235"
с $EMAIL
установленным значением «echo». Если вы хотели, чтобы результат вашей команды был введен $EMAIL
, то у вас неправильный синтаксис.
EMAIL=$(echo "SELECT email FROM Edsrn WHERE userid = 1235" | mysql ${MYSQLOPTS})