2012-09-10 37 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