繁体   English   中英

wget返回错误404时如何恢复循环-Bash

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM