我有一个软件,它有几个版本,可以从版本1升级到版本5。要升级,我们需要检索版本 2、3、4 和最后的 5。如何循环所有版本?这是我的尝试:
#!/bin/bash
version=1
while [ wget --spider https://download.software/server/releases/latest-"$version".tar.bz2 2>/dev/null ]
do
version=$((version+1))
echo $i
done
你的问题是大括号[]
. [
本身就是一个命令。要检查循环中wget
的退出状态,只需使用 while wget ...; do ...; done
。
但是,您根本不需要循环。 wget
可以在一次调用中使用多个 URL,bash
可以使用大括号扩展{1..5}
生成 URL:
#! /bin/bash
wget https://download.software/server/releases/latest-{1..5}.tar.bz2
如果您想
一次下载一个,@Socowi的答案很好。如果您更喜欢并行下载:
parallel -j0 wget https://download.software/server/releases/latest-{}.tar.bz2 ::: {1..5}