如何在Bash脚本中循环运行带有参数的curl命令?

24

我想要在for循环中执行一个curl命令。 例如,我想要循环执行1到100次,并且每次curl命令运行时,它都使用迭代变量值作为curl命令本身的一部分。 类似于:

#!/bin/bash
  for i in {1..10}
 do
    curl -s -k 'GET' -H 'header info' -b 'stuff' 'http://example.com/id=$i'        
 done
 --notice here I want var i to be changing with every curl.

任何帮助都可以,谢谢。


1
变量在单引号内不会被扩展。请使用双引号代替。 - Barmar
1个回答

52

试一试:

set -B                  # enable brace expansion
for i in {1..10}; do
  curl -s -k 'GET' -H 'header info' -b 'stuff' 'http://example.com/id='$i
done

参见:Bash中单引号和双引号的区别


1
为什么不能使用1..10?你使用的是哪个版本的bash - Barmar
1
尝试使用以下代码for i in $(seq 1 10); do - Cyrus
17
“curl”可以处理序列,无需手动迭代。以下是需要翻译的内容:curl -s -k 'GET' -H 'header info' -b 'stuff' 'http://example.com/id=[1-10]' - Teddy Katayama
1
@TeddKatayama curl 可以发送多个请求,但是这是顺序的。如果我们只是在curl命令后面添加“&”,上述脚本就可以并行执行了。 - roneo
1
curl -s -Z 'GET' -H 'header info' -b 'stuff' 'http://example.com/id=[1-10]' @roneo Curl还支持通过–parallel / -Z标志进行并行请求。 - Teddy Katayama
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接