Como posso continuar um loop no bash depois que um aplicativo retornou um erro?

2

Salvei imagens com:

#!/bin/bash
for i in {1..30000}
do
    wget "http://services.runescape.com/m=itemdb_rs/3809_obj_sprite.gif?id="$i
done

Existe uma maneira de acelerar o processo? Às vezes, uma URL não existe e eu recebo:

connected.
HTTP request sent, awaiting response... 404 Not found
2012-08-04 18:09:36 ERROR 404: Not found.

Como posso continuar depois desse erro?

    
por Szymon Toda 04.08.2012 / 18:17

2 respostas

8

Tente

wget "http://s.../m=itemdb_rs/3809_obj_sprite.gif?id="$i || true

Dessa forma, se wget falhar, o resultado dessa linha ainda será zero e o script continuará.

Para saber como propriamente manipular erros em um script bash, confira os seguintes recursos:

por 04.08.2012 / 18:30
1

Você poderia tentar algo assim.

#!/bin/bash
for i in {1..30000};
do 
x="http://64.79.147.130/m=itemdb_rs/3809_obj_sprite.gif?id="$i
if [[ $(echo $(GET -sd $x | grep "404")) = "" ]]; 
then 
wget --no-dns-cache -nc -U"Firefox/10" $x 2>&1 \
| grep "Saving" | sed 's,Saving to,Saved,'; 
fi 
done
    
por 06.08.2012 / 20:57

Tags