我想通过下载一个文件curl
- 问题是我的连接速度非常慢,并且通过未知的方式,在大约 180 KB 后停止接收数据。
除非有更好的方法来修复它,否则我想编写一个 shell 脚本,使其在断开连接后运行(如果文件未完全下载)。
这样的脚本应该是什么样子?是否可以通过shell脚本来实现?
答案1
您可以curl
使用以下命令重试--retry
选项:
curl --retry 10 ...
将重试最多十次来下载给定的 URL。
值得检查--retry-...
文档中的各种相关选项;考虑到您预计会出现错误,默认的退避算法可能并不理想,因此--retry-delay
会派上用场。正如所提到的佐藤桂,超时选项也很有用(--...-timeout
和--max-time
)。
如果失败,因为curl
遇到一个它认为不是暂时性的错误,您可以使用循环:
result=56
while [[ ${result} == 56 ]]; do
curl -C - ...
result=$?
done
您可能想在其中添加一个计数器来限制循环次数。