为什么在尝试使用Linux中的bash脚本从MySQL数据库检索数据时出现此错误?

时间:2011-05-27 03:11:55

标签: mysql linux bash database-connection

我正在尝试从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 个答案:

答案 0 :(得分:1)

它试图在"SELECT email FROM Edsrn WHERE userid = 1235"设置为“echo”的情况下运行$EMAIL。如果您希望将命令的结果放在$EMAIL中,那么您的语法错误。

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

另外,BASH FAQ entry #50

答案 1 :(得分: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