我想编写一个 Linux 脚本,从网站下载不同日期的图片。我想我需要三个循环来表示 YY、MM 和 DD。YY 应该是 1974–2017、MM 01–12 和 DD 01–31。它在小型 Linux bash 脚本中是什么样子的?
答案1
我假设你的某个文件是 https://www.url.com/2017-11-16.png
这样的,只有日期会改变。你可以使用Bash 括号扩展一次性计算日期并下载文件:
wget https://www.url.com/{2016..2017}-{01..02}-{01..02}.png
然而,这不适用于非常像你的情况一样,因为终端命令的长度是有限制的。另一种方法是for
循环:
for i in {2016..2017}-{01..02}-{01..02}; do
wget https://www.url.com/$i.png
done
但使用这种方法,你仍会得到像 2017-02-31 这样的日期。要仅获取实际的我们需要的日期date
就像这个脚本中取自这里:
#!/bin/bash
startdate=2017-11-14
enddate=2017-11-16
d=
n=0
until [ "$d" = "$enddate" ]; do
d=$(date -d "$startdate + $n days" +%Y-%m-%d)
wget https://www.url.com/$d.png
((n++))
done
根据您的具体需求调整startdate
和enddate
。如果您需要将日期格式更改为例如20171116
,请在这两个变量中执行此操作和命令date
,在这个例子中它是+%Y%m%d
。