这里有一个如何让 cURL 自动恢复中断下载的解决方案,来自 Juan Nunez-Iglesias 2013 年的博客文章:
export ec=18; while [ $ec -eq 18 ]; do curl -O -C - http://site.xyz/file.zip; export ec=$?; done
它已经在这里发布了好几次,无论是原始版本还是在
while
循环中都有细微的变化。
while
循环内的更改由不同的人引入,以使脚本更加健壮。
$?
为您提供 bash 中最后一个命令的退出代码。因此,当退出代码为 18 时,继续尝试下载文件,并保持文件名(-O
) 并从上次下载停止的地方继续 (-C
)。” - 胡安·努涅斯-伊格莱西亚斯while [ $ec -ne 0 ]
,但这感觉就像在 Python 中使用裸露的 except,这很糟糕 ;)” - Juan Nunez-Iglesiaswhile [ $ec -ni 0 ]
”- Ilya Belsky3 月份,Helder Magalhães 建议将原始 Juan 版本中的
while
循环替换为 until
:
这个解决方案可以使用
进一步简化。请参阅相关主题。until
虽然我不太擅长使用 cURL 或 shell 脚本,但我会尝试自己编写它,但自己编写它的问题不是脚本本身,而是缺乏了解如何正确测试它。
有人可以展示如何实现赫尔德的想法吗?它真的能让脚本更加健壮吗?
我使用Zsh。
我认为您想搜索模拟网络流量/抖动/丢包的工具。快速网络搜索有相当多的点击率。