BASH条件超出了我的理解

时间:2018-09-24 00:21:41

标签: bash wget

浏览项目“ pageauc / pi-timolo”时,我遇到了以下BASH脚本:

timoloFiles=("menubox.sh" "pi-timolo.py" "pi-timolo.sh")

for fname in "${timoloFiles[@]}" ; do
    wget_output=$(wget -O $fname -q --show-progress https://raw.github.com/pageauc/pi-timolo/master/source/$fname)
    if [ $? -ne 0 ]; then
        wget_output=$(wget -O $fname -q https://raw.github.com/pageauc/pi-timolo/master/source/$fname)
        if [ $? -ne 0 ]; then
            echo "ERROR : $fname wget Download Failed. Possible Cause Internet Problem."
        else
            wget -O $fname https://raw.github.com/pageauc/pi-timolo/master/source/$fname
        fi
    fi
done

我知道这是遍历文件并使用WGET下载文件,但我不明白为什么它会根据上一个命令的退出状态显示每个文件下载多达三遍。这是怎么回事?

2 个答案:

答案 0 :(得分:1)

我是作者,而代码仅是为了允许使用不同版本的wget。较新的版本支持show progress和-q,但较早的版本不支持,因此我捕获了错误并尝试了较早但较复杂的语法。克劳德..

答案 1 :(得分:0)

if条件语句正在检查上一条命令的退出代码。因此,第一个if检查第一个wget退出代码是否不等于0(成功)。如果不是零,它将重试。它不会下载该文件三次。

每个wget也有所不同。即第一个包含--show-progress标志,第二个包含-q(quota)。

这是重试的基本实现,可能考虑到某些情况?