2012-09-10 75 views
1

我想在運行curl的while循環中使用grepBash:在捲曲時使用變量grep字符串

i=1 
    while read -a row 
    do 
     test $i -eq 1 && ((i=i+1)) && continue 
     STRING=${row[2]} 
     CURL=`curl ${row[0]}${row[1]} | ${grep '$STRING'}` 
     echo $CURL 
    done < <(echo "SELECT check_address, check_page, check_string FROM checks" | mysql monitor) 

的問題是該行"${grep '$STRING'}」既然grep必須grep 'text'我嘗試不同的方法一樣grep '$var'${grep $var}不能使它工作

SQL輸出:。

${row[0]} = http://www.codeoasis.com/ 
    ${row[1]} = index.php 
    ${row[2]} = Copyright 

回答

2

您不需要捕獲curlgrep的輸出:

i=1 
while read -a row 
do 
    test $i -eq 1 && ((i=i+1)) && continue 
    STRING=${row[2]} 
    curl ${row[0]}${row[1]} | grep "$STRING" 
done < <(echo "SELECT check_address, check_page, check_string FROM checks" | mysql monitor) 

請注意圍繞$STRING使用雙引號,而不是單引號。

+0

當我運行它,我仍然得到空應答:[根@綠洲顯示器]#./Monitor.sh %合計%收稿%Xferd平均速度時間時間時間電流 DLOAD上傳一共花左速度 100 22248 22248 0 0 0 75002 0 - : - : - - : - : - - : - : - 2450k – SlipY

+0

請將您的SQL查詢的輸出添加到您的問題中。現在看起來URL很好(返回2450k),但是請求的字符串不存在。 – chepner

+0

它的存在,如果我現在輸入字符串在一個變量它的工作,唯一的問題是與grep,不會讀取變量(我回聲它和它的存在) – SlipY