如果 url return 404,如何 wget 继续上一个循环? bash

how to wget continue previous loop if url return 404 ? bash

我正在尝试编写一个脚本来自动在线下载一些图片。

当 k returns 404 时如何打破内部循环并继续之前的循环?

这是我的代码:

for i in {1..50}; 
do
for k in {1..100}; 
do
wget http://www.magga.com/files?cat=$i&id=$k
done

谢谢

不是让 wget 写入文件,而是将输出存储在一个变量中。例如:

check=$(wget -O - http://www.magga.com/files?cat=$i&id=$k)

将输出存储在 $check 中。如果 $check 的长度为零——您可以通过 ${#check} 获取长度,中断循环。否则将 $check 写入文件。

wget 的输出被发送到 stderr,包括 404 错误。
可以检查输出字符串是否包含404 Not Found,然后退出最内层循环:

#!/bin/bash

for i in {1..50}; do
    for k in {1..100}; do
        ret=$(wget http://www.magga.com/files?cat=${i}&id=${k} 2>&1)
        if [[ "$ret" =~ 404\ Not\ Found ]]; then
            break   # exit from current "k" loop and continues with next "i"
        fi
    done
done

希望对您有所帮助。