我正在尝试从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"
它出了什么问题?我说“找不到命令”。请帮忙!
答案 0 :(得分:1)
它试图在"SELECT email FROM Edsrn WHERE userid = 1235"
设置为“echo”的情况下运行$EMAIL
。如果您希望将命令的结果放在$EMAIL
中,那么您的语法错误。
EMAIL=$(echo "SELECT email FROM Edsrn WHERE userid = 1235" | mysql ${MYSQLOPTS})
答案 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