使用shell从mysql中逐个获取列值

时间:2017-04-05 20:10:40

标签: mysql shell

我在 mysql 数据库中有一个名为 student 的表。此表包含名为 email 的列。

我使用以下命令向特定学生发送电子邮件,由 pid 标识:

$email=$(mysql --login-path=local --database=ccps -ss -e "select email from student where pid=132054");   
echo "This is sample mail" | mail -s "Test" $email

我想知道如何向数据库中的每个学生发送电子邮件。由于我不知道如何在列电子邮件上使用循环。

谢谢。

2 个答案:

答案 0 :(得分:1)

对于游戏,这样的事情对你有用。但是有更好的方法可以做到这一点。

read -ra student_emails <<< $(mysql --login-path=local --database=ccps -ss \
                                     -e "select email from student order by pid;")
for email in ${student_emails[@]}
do
    echo "This is sample mail" | mail -s "Test" ${email[0]}
done

答案 1 :(得分:0)

我能想到的最直接的方式是:

for email in `mysql --login-path=local --database=ccps -ss -e "select email from student order by pid;"`
do
        echo "This is sample mail" | mail -s "Test" $email
done

如果您之前没有遇到过它们,那么在mysql之前和命令末尾的引号都是左手引号,而不是通常的单引号。正如之前的评论所说,像PHP这样的东西可以更好/更容易地构建更复杂的电子邮件。