Вы можете сказать curl
повторить попытку с помощью опции --retry
:
curl --retry 10 ...
будет повторять попытку до десяти раз, чтобы загрузить заданный URL.
Стоит проверить различные связанные --retry-...
в документации; учитывая, что вы ожидаете ошибок, алгоритм обратного хода по умолчанию может быть не идеальным, поэтому --retry-delay
может пригодиться. Как упоминал Sato Katsura, опции таймаута также могут быть полезны (--...--timeout
и ---max-time
).
Если это не удается, потому что curl
встречает ошибку, которую не считает преходящей, можно использовать цикл:
result=56
while [[ ${result} == 56 ]]; do
curl -C - ...
result=$?
done
Возможно, вы захотите добавить туда счетчик, чтобы ограничить количество циклов.