回答
这是我在我的构建脚本的一个用途:
curl "${UPLOAD_URL}" \
--progress-bar \
--verbose \
-F build="${BUILD}" \
-F version="${VERSION}" \
-F ipa="@${IPA};type=application/octet-stream" \
-F assets="@-;type=text/xml" \
-F replace="${REPLACE}" \
-A "${CURL_FAKE_USER_AGENT}" \
<<< "${ASSETS}" \
| tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0
的-F
和-A
选项可能不会有兴趣的你,但有用的部分是:
curl "${UPLOAD_URL}" --progress-bar
它告诉curl
在上传期间显示进度条(而不是默认的“进度表”),并且:
| tee -a "${LOG_FILE}" ; test ${PIPESTATUS[0]} -eq 0
它将命令的输出附加到日志文件,并将其回显到stdout
。 test ${PIPESTATUS[0]} -eq 0
部分使得该行(在bash脚本中)的退出状态与curl
命令返回的退出代码相同,而不是tee
命令的退出状态(因为tee
实际上是最后一个命令在这一行执行,而不是curl
)。
从man curl
:
PROGRESS METER
curl normally displays a progress meter during operations, indicating the amount of transferred data, transfer speeds and estimated time left, etc.
curl displays this data to the terminal by default, so if you invoke curl to do an operation and it is about to write data to the terminal, it disables the progress meter as otherwise it would mess up the
output mixing progress meter and response data.
If you want a progress meter for HTTP POST or PUT requests, you need to redirect the response output to a file, using shell redirect (>), -o [file] or similar.
It is not the same case for FTP upload as that operation does not spit out any response data to the terminal.
If you prefer a progress "bar" instead of the regular meter, -# is your friend.
OPTIONS
-#, --progress-bar
Make curl display progress as a simple progress bar instead of the standard, more informational, meter.
注意!需要“tee”命令才能获取有关下载进度的信息。如果你不想使用'tee',那么只需使用'grep -v'^ uniqueStringNeverHappens $''命令。更多信息:http://stackoverflow.com/a/17178410/751932 – Speakus 2014-09-16 07:44:24
或者:'>/dev/null' – asymmetric 2016-05-18 13:07:15
这似乎不适用于我:( 编辑:没关系,问题是,我想时间需要多长时间,所以我使用'time curl --progress-bar --verbose ...'来防止显示进度条。无需工作即可运行它。 – 2016-07-26 03:56:00
我曾与接受答案的命令重定向麻烦,发现-o
选项将放在一个文件,该文件允许进度条显示的响应输出。
curl --progress-bar \
-o upload.txt \
-H ${SOME_AUTH_HEADER} \
-T ${SOME_LARGE_FILE} \
"${UPLOAD_URL}"
只是另一种获得所需结果的选项。
注意:在这条线从该名男子页强调重要的是要了解为什么单单指定--progress-bar
当进度条没有显示的根本原因。
If you want a progress meter for HTTP POST or PUT requests,
you need to redirect the response output to a file,
using shell redirect (>), -o [file] or similar.
这里的所有其他答案都有问题,它们需要您将curl的原始输出写入(日志)文件。但是,这可能不是所有情况下都需要的。
问题是curl隐藏了进度条/计时器,当预计服务器响应时,它会写入到sdout中。 所以基本上可以将输出重定向到一个文件再次显示栏。但是,我们并不希望出现这种情况,所以/dev/null
和tee
可以帮助我们在这里:
curl --progress-bar -T "${SOME_LARGE_FILE}" "${UPLOAD_URL}" | tee /dev/null
卷曲的输出被传递到tee
其输出都写入控制台(这是我们希望看到的进度条,也是服务器响应)和一个文件(这是我们不需要的,但因为我们使用/dev/null
这并不重要)。
请注意,卷发器当然没有隐藏进度条的乐趣。在这种情况下,您可能无法始终看到服务器结果,或者只能显示几秒钟,但如果您不关心此问题,则该解决方案非常好。
- 1. 如何在控制台上显示S3上的视频上传进度信息?
- 2. 如何显示进度信息?
- 3. 如何在使用ADO.NET时最好地显示进度信息?
- 4. 在上传时显示进度条
- 5. 在窗口中显示进度信息
- 6. 如何显示文件上传进度?
- 7. 在jsp中,如何在上传文件时显示进度条
- 8. cURL - 通知上传进度
- 9. 上传文件时显示进度条
- 10. AFNetworking显示上传进度
- 11. 显示上传进度
- 12. 动态显示进度信息
- 13. 显示与信息进度条的Android
- 14. 如何在上传数据到服务器时显示上传进度条?
- 15. 如何显示每个图像上传的上传进度
- 16. 如何显示进度条,同时上传百分比
- 17. 如何使用node.js实时显示文件上传的进度
- 18. 如何在图片上传中显示错误信息
- 19. 上传图片并显示信息
- 20. 在Jpanel上显示信息
- 21. 如何在rsync上显示进度
- 22. 如何在webview上显示进度条?
- 23. 后端进程运行时如何显示进度消息/栏?
- 24. 如何在PHP中更新时显示进度消息?
- 25. 捕获传送进度并在进度条上显示
- 26. 如何在dropzone.js中显示上传进度百分比
- 27. 如何在CKEditor中显示上传进度?
- 28. 如何在ajax文件上传中显示进度条
- 29. 进度信息
- 30. 如何在欢迎信息/ MOTD上显示当前时间?
http://curl.haxx.se/docs/manpage.html请参阅进度表部分。我怀疑你需要将输出传输到一个文件,尽管我不积极。 – Corbin 2012-04-02 08:27:11
你是对的。谢谢! – Determinant 2012-04-02 08:34:51