从bash脚本查询mysql

问题描述:

所以我需要从一个文件中读取一串ID号码并在它们每个上执行一次mysql查询。我开始与此:从bash脚本查询mysql

#!/bin/bash 
file="eidlist.txt" 
while IFS= read -r line 
do 
    mysql --host <redacted> --user <redacted> --password=<redacted> -N -e "use netops;select m_mailname from footprints where m_empno=$line;" 
done <"$file" 

这工作并产生预期的输出。现在我需要做同样的事情,但使用不同的ID列表,查询不同的字段。因为现在我查询的字段包含字母数字值(而前一个是完全数字小),我需要包围在MySQL查询字符串引号的价值,这是我与\”像这样逃脱

#!/bin/bash 
file="pidlist0.txt" 
while IFS= read -r line 
do 
    mysql --host <redacted> --user <redacted> --password=<redacted> -N -e "use netops;select m_mailname from footprints where m_stuid=\"$line\";" 
done <"$file" 

这是行不通的 - 脚本没有输出,我做错了什么?

当我在命令行测试mysql命令时(将$ line变量预先填充到其中一个值文件),它可以工作,但是当从脚本内部运行时,它不产生输出。发生了什么?

+0

请给出确切的mysql命令,在你的命令行中没问题。 –

只需使用m_stuid ='$ line';“ ?或者将双重更改为单一。

+0

有了第一个建议,它仍然没有输出,大概是因为用单引号变量没有被扩展,所以它在字面上搜索“$ line”,这不会产生任何结果。有了第二个建议,每行都会出现“第1行错误:未知命令”\“'。”,我不明白。 –