Я хотел бы записать сценарий Linux для загрузки изображения с веб-сайта с другой датой. Я предполагаю, что мне нужны три цикла для YY, MM и DD. YY должна быть 1974–2017, MM 01–12 и DD 01–31. Как это похоже в маленьком сценарии удара Linux?
Я предполагаю, что один из Ваших файлов https://www.url.com/2017-11-16.png
и только изменения даты. Вы могли использовать Расширение Фигурной скобки Bash, чтобы вычислить даты и загрузить файлы в одном выполнении:
wget https://www.url.com/{2016..2017}-{01..02}-{01..02}.png
Однако это не будет работать на очень многие URL как в Вашем случае, потому что существует предел продолжительности терминальной команды. Альтернатива является a for
цикл:
for i in {2016..2017}-{01..02}-{01..02}; do
wget https://www.url.com/$i.png
done
Но Вы все еще получите даты как 31.02.2017 с этим подходом. Чтобы только получить фактические даты, нам нужно 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
.