如何使用循环下载1945年至2020年的最佳轨道JTWC数据文件



我想从1945年到2020年使用循环从URL下载数据文件,URL中只有一个数字更改,URL如下所示https://www.metoc.navy.mil/jtwc/products/best-tracks/1945/1945s-bio/bio1945.ziphttps://www.metoc.navy.mil/jtwc/products/best-tracks/1984/1984s-bio/bio1984.ziphttps://www.metoc.navy.mil/jtwc/products/best-tracks/2020/2020s-bio/bio2020.zip

我尝试了以下代码,但它抛出了一个错误

for i in {1945..2020}
do
wget "https://www.metoc.navy.mil/jtwc/products/best-tracks/$i/$is-bio/bio$i.zip"
done

我确实稍微更改了您的代码

for i in {1945..1947}
do
echo "https://www.metoc.navy.mil/jtwc/products/best-tracks/$i/$is-bio/bio$i.zip"
done

当运行时,它确实输出

https://www.metoc.navy.mil/jtwc/products/best-tracks/1945/-bio/bio1945.zip
https://www.metoc.navy.mil/jtwc/products/best-tracks/1946/-bio/bio1946.zip
https://www.metoc.navy.mil/jtwc/products/best-tracks/1947/-bio/bio1947.zip

请注意,第一个不是您可能预期的https://www.metoc.navy.mil/jtwc/products/best-tracks/1945/1945s-bio/bio1945.zip——第二个$i没有按预期工作,因为它后面是s——它被理解为未定义的变量is。将变量名封装在{}中以避免混淆,此代码为

for i in {1945..1947}
do
echo "https://www.metoc.navy.mil/jtwc/products/best-tracks/${i}/${i}s-bio/bio${i}.zip"
done

运行时输出

https://www.metoc.navy.mil/jtwc/products/best-tracks/1945/1945s-bio/bio1945.zip
https://www.metoc.navy.mil/jtwc/products/best-tracks/1946/1946s-bio/bio1946.zip
https://www.metoc.navy.mil/jtwc/products/best-tracks/1947/1947s-bio/bio1947.zip

这和你举的例子是一致的。现在,您可以使用wget替换echo,或者使用echo将代码输出保存到名为urls.txt的文件中,然后使用wget-i选项,如下所示

wget -i urls.txt

注:为了简洁起见,我使用1945..1947代替1945..2020

它直接起作用了,谢谢@Daweo

for i in {1945..2020}
do
wget "https://www.metoc.navy.mil/jtwc/products/best-tracks/${i}/${i}s-bio/bio${i}.zip"
done

最新更新