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

发布于 2024-11-09 17:22:44 字数 412 浏览 3 评论 0原文

我正在尝试从 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"

这有什么问题吗?我说“找不到命令”。请帮忙!

I am trying to retrieve email address from MySQL database.

#!/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"

What is wrong with it? I says "command not found". Please help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爺獨霸怡葒院 2024-11-16 17:22:44

我建议改用 -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

I recommend using the -e parameter to evaluate SQL statements instead. This should be what you're looking for:

#!/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"

Note the tail is needed since the output from mysql looks like this:

column
value
盛夏已如深秋| 2024-11-16 17:22:44

它尝试运行 “SELECT email FROM Edsrn WHERE userid = 1235”,并将 $EMAIL 设置为“echo”。如果您希望将命令的结果放入 $EMAIL 中,那么您的语法就错误了。

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

另外,BASH 常见问题解答条目 #50

It's trying to run "SELECT email FROM Edsrn WHERE userid = 1235" with $EMAIL set to "echo". If you wanted the result of your command to be put in $EMAIL then you got the syntax wrong.

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

Also, BASH FAQ entry #50.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文