[英]How to resume loop when wget returns error 404 - Bash
我正在尝试编写一个简单的脚本,该脚本将为我下载文件,但是我不知道确切的URL。 我要在网址中间添加一个ID,直到我实际获得正确的ID。 问题是起点不正确,wget返回404错误,然后循环不继续。
如何获得循环以使用新的ID再试一次?
这是我的代码:
#!/bin/sh
id=7887902
urla="https://firsthalfofurl"
urlb="secondhalfofurl.pdf"
url=$urla$id$urlb
for i in {1..5};
do
wget --user uname --password pass $url;
id=$((id+1));
url=$urla$id$urlb
done
我也尝试添加|| 在wget命令中$ url之后返回true,并且不起作用。
尝试这个:
wget --user uname --password pass $url || true;
这样,如果wget失败,则该行的结果仍为零,并且脚本继续。
好的,我找到了解决方案。 这不是完美的,因为结果是一个无限循环,只能由ctrl -c终止。 这是我的新代码。
#!/bin/sh
id=8057270
urla="firsthalfofurl"
urlb="secondhalfofurl.pdf"
checka="$(ls -l | wc -l)"
checkb="$(ls -l | wc -l)"
url=$urla$id$urlb
update () {
id=$((id+1));
url=$urla$id$urlb;
checkb="$(ls -l | wc -l)";
}
yes () {
#check to see if the number of files in the folder has increased.
if [ $checkb -gt $checka ]; then
#this will show up on every successive loop so if I let it run overnight I will know if the file has been found. Not really necessary.
sleep 3;
echo File Found;
sleep 1;
fi;
update;
wget --user username --password pass $url;
trap yes EXIT
yes
}
yes
您应该对所有$url
都加双引号。 由于我们看不到first-
和secondhalfofurl
是什么,因此其中可能存在关键字符,这些字符破坏了您的命令。
例如
wget --user uname --password pass "$url"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.