【发布时间】:2015-03-23 20:19:20
【问题描述】:
我正在尝试通过内部 API 获取 JSON 输出并将 100 添加到 cURL 请求之间的参数值。我需要循环,因为它将每个请求的最大结果数限制为 100。我被告知“增加,你应该能够得到你需要的”。
不管怎样,这是我写的:
#!/bin/bash
COUNTER=100
until [ COUNTER -gt 30000 ]; do
curl -vs "http://example.com/locations/city?limit=100&offset=$COUNTER" >> cities.json
let COUNTER=COUNTER+100
done
问题是我在终端中收到了一堆奇怪的消息,而我试图重定向输出的文件仍然包含它原来的 100 个对象。我觉得我可能错过了一些非常明显的东西。有什么想法吗?我确实在 until 循环上使用了一个有点旧的教程,所以也许这是一个语法问题?
提前谢谢你!
编辑:我不反对完全替代的方法,但我希望这会有点简单。我认为我缺乏经验是主要的限制因素。
【问题讨论】:
-
为什么它不包含它的原始内容?你只是在追加。
-
关于“发送到终端的奇怪消息”——curl 的 stderr 的所有内容都将打印到终端,因为您使用的是
curl -v,这就是您的行为要求。如果您希望 curl 打印不同的消息,我建议您确定您真正想要的详细程度。 -
@CharlesDuffy 我认为我最初的评论有点不准确。我的意思是当我停止该过程时没有附加任何内容 - 内容仍然是我第一次使用 cURL 时文件中的原始 100 个对象。几分钟后我停止了脚本,因为请求被挂起。我对我使用的选项也有错误(我认为 -s 应该抑制一些标准输出和标准错误),因此可以解释终端中的消息。我没有接受过正规培训,所以这对我来说有点新鲜。