BASH 条件超出了我的理解

  • 本文关键字:条件 BASH 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 下载它们,但我不明白为什么它似乎根据先前命令的退出状态下载每个文件多达三次。 这是怎么回事?

我是作者,代码只是为了允许不同版本的 wget。 较新的版本支持显示进度和-q,但早期版本不支持,因此我捕获错误并尝试更早但更冗长的语法。 克劳德。。

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

每个wget也有点不同。 即第一个包含 --show-progress 标志,第二个包含 -q(配额(。

这是重试的基本实现,可能是为了解释某些情况?

最新更新