Условия BASH за гранью моего понимания - PullRequest
0 голосов
/ 24 сентября 2018

Просматривая проект "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, но я не понимаю, почемуКажется, он загружает каждый файл три раза в зависимости от состояния выхода предыдущей команды.Что здесь происходит?

1 Ответ

0 голосов
/ 24 сентября 2018

Условное условие проверяет код выхода предыдущей команды.Поэтому первый if проверяет, не был ли первый код выхода wget равен 0 (успех).Если это что-то отличное от нуля, он попытается снова.Он не будет загружать файл три раза.

Также каждый wget немного отличается.то есть первая содержит флаг --show-progress, вторая содержит -q (квота).

Это элементарная реализация повторной попытки, возможно, для учета определенных ситуаций?

...