我正在尝试编写一个简单的脚本来为我下载文件,但我不知道确切的网址。在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,但这不起作用。
答案 0 :(得分:0)
试试这个:
wget --user uname --password pass $url || true;
这样,如果wget失败,该行的结果仍为零,并且脚本继续。
答案 1 :(得分:0)
好的,我找到了解决方案。它并不完美,因为结果是无限循环,只能通过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
答案 2 :(得分:-1)
您应该对所有$url
的内容进行双重引用。由于我们无法看到first-
和secondhalfofurl
是什么,因此可能存在破坏您命令的关键字符。
E.g。
wget --user uname --password pass "$url"