应用程序返回错误后,如何继续 bash 中的循环?

应用程序返回错误后,如何继续 bash 中的循环?

我使用以下方式保存图像:

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

有没有办法加快这个过程?有时 URL 不存在,我会得到:

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

出现此错误后我该如何继续?

答案1

尝试

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

这样,如果wget失败,该行的结果仍然为零,并且脚本继续运行。

学习如何适当地处理 Bash 脚本中的错误,请查看以下资源:

答案2

您可以尝试这样的方法。

#!/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

相关内容