如果 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
希望对您有所帮助。
我正在尝试编写一个脚本来自动在线下载一些图片。
当 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
希望对您有所帮助。