2016-11-07 121 views
0

所以我需要從一個文件中讀取一串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命令,在你的命令行中沒問題。 –

回答

0

只需使用m_stuid ='$ line';「 ?或者將雙重更改爲單一。

+0

有了第一個建議,它仍然沒有輸出,大概是因爲用單引號變量沒有被擴展,所以它在字面上搜索「$ line」,這不會產生任何結果。有了第二個建議,每行都會出現「第1行錯誤:未知命令」\「'。」,我不明白。 –