增加curl URL参数内的变量

时间:2016-06-30 13:33:46

标签: bash curl

我想要做的是使用带有bash变量的curl来通过递增参数从URL检索内容长度。

for ((i=2561;i<=2563;i++))
do 
(curl -i -s -k  -X 'GET' 'http:someurl.asp?q=$i)
done

当我这样做时,我总是从HTTP响应获得相同的内容长度。现在,如果我采用相同的curl命令并在循环外运行,就像这样:

curl -i -s -k  -X 'GET' 'http:someurl.asp?q=2562

它完美无缺。我尝试了for和while循环,也尝试使用cat从文件中读取,但它始终具有相同的内容长度。我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

尝试

curl -i -s -k  -X 'GET' "http:someurl.asp?q=$i"

使用单引号即 - 'http:someurl.asp?q=$i'通常表示

  1. 无变量扩展
  2. 没有命令替换
  3. 您可以获得放在''内的确切内容。
  4. 同样(process)在子shell中运行该过程,这是不必要的。

    <强>旁注

    C风格的forloop sonstruct并不要求你在变量$之前。但是,在使用变量时,您需要在它们之前$

答案 1 :(得分:0)

更正的代码将是

for ((i=2561; i<=2563; i++))
do 
    curl -i -s -k  -X GET "http:someurl.asp?q=$i"
done

您需要使用双引号才能将$1扩展为当前值i