Shell Script с wget для получения даты минус 1 день - PullRequest
1 голос
/ 03 апреля 2012

Я написал сценарий оболочки, который загружает документ.

cd Desktop/Reports/folder/

wget http://www.mywebpage.com/data/reports/2012_04_02_data.xls

echo "data downloaded."

Сложность в том, что документ, который я хочу загрузить (2012_04_02_data.xls), датирован предыдущим днем. Поэтому мне нужно загрузить данные за предыдущие дни, а не за текущий день.

Моя цель - запустить скрипт оболочки без необходимости увеличения календарного дня каждое утро. Вместо этого оболочка возьмет текущий день и вычтет один календарный день, а затем загрузит эту дату в URL.

Спасибо за помощь!

Ответы [ 4 ]

7 голосов
/ 03 апреля 2012

Как насчет:

wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +%Y_%m_%d)_data.xls"

Это должно работать для GNU coreutils, который основан на теге linux, который, я полагаю, у вас есть.

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

Вы можете использовать команду date

$ wget "http://www.mywebpage.com/data/reports/$(date -d yesterday +'%Y_%m_%d')_data.xls"
1 голос
/ 04 апреля 2012

Вы пометили это как perl, так что вот как я это сделаю с Perl. Это не значит, что я думаю, что вы должны использовать Perl:

use v5.10.1;

use DateTime;
use Mojo::UserAgent;

chdir 'Desktop/Reports/folder' or die "Could not chdir: $!";

my $date = DateTime->now->subtract( days => 1 )->ymd( '_' );
my $url = sprintf 
    "http://www.mywebpage.com/data/reports/%s_data.xls",
    $date;

my $data = Mojo::UserAgent->new->get( $url )->res->body;

С пользовательским агентом вы можете делать более изящные вещи, чтобы сохранять фрагменты в файл по мере его поступления и многое другое, что вы, возможно, захотите сделать, но вам придется заполнять эти фрагменты самостоятельно.

1 голос
/ 03 апреля 2012

Более сложная часть, если вам приходится работать с выходными днями.Обычно я вижу ссылку, содержащую страницу, а затем извлекаю дату из атрибута href.затем передайте строку вашей "реальной" команде wget.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...