Использование дат в сценарии оболочки Mac OS - PullRequest
1 голос
/ 31 марта 2012

Я пишу простой пакетный загрузчик для файлов, которые имеют формат Ymd.pdf.Я хочу передать даты (от, до) в качестве параметра, например:

. / Download.sh 2012-01-01 2012-01-31

Это должно загрузить все файлы дляЯнварь 2012.

Вот что я получил до сих пор:

#!/bin/bash

for i in {0..9}
do
    curl -u user:pw http://server/path/somescript.pl?date=`date -v-"$i"d +%Y-%m-%d` -o `date -v-"$i"d +%Y-%m-%d`.pdf
done

Это загружает десять самых последних файлов.

РЕДАКТИРОВАТЬ: Как я могувместо этого перебирать диапазон дат?Что-то вроде:

for d in {2012-01-01..2012-03-31}

Я надеялся на встроенную функцию, иначе мне самому нужно было бы позаботиться о количестве дней в каждом месяце (не забывать о високосных годах).

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Ниже показана основная идея, вы должны добавить для себя curl:

START=`date -j -f %Y-%m-%d:%H.%M $1:0.0 +%s`
END=`date -j -f %Y-%m-%d:%H.%M $2:0.0 +%s`
for (( i=$START; i<=$END; i+=86400 )); do # seconds/day
   echo `date -j -f %s "$i" +%Y-%m-%d`
done;  

Если вы называете это:

> ./range 2012-1-30 2012-2-4
2012-01-30
2012-01-31
2012-02-01
2012-02-02
2012-02-03
2012-02-04
1 голос
/ 31 марта 2012

ВЫ можете использовать [01-31] для загрузки ряда файлов:

$ curl -u user:pw 'http://server/path/somescript.pl?date=2012-01-[01-31]' -o '2012-01-#1.pdf'
...