2012-03-31 5 views
0

Y-m-d.pdf 형식의 파일에 대한 간단한 배치 다운로더를 작성하고 있습니다. 나는 날짜 (에,에서) 매개 변수로 전달하는 예를 원하는 :Mac OS 쉘 스크립트에서 날짜 사용

./download.sh 2012 년 1 월

모든 파일을 다운로드해야합니다 2012-01-31

2012-01-01

는 여기에 지금까지 가지고있는 작업은 다음과 같습니다

#!/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} 

내가 바라던 기능을 내장하여, 그렇지 않으면 나 자신을 (윤년 잊지되지 않음) 각 월의 일 수를 돌봐해야합니다.

+0

당신의 질문은 무엇입니까? – Matthias

+0

나는 현재 날짜 (예 : date -v 10d)에 상대적인 날짜를 수정하는 방법 만 알아 냈지만 시작 날짜와 종료 날짜 사이의 모든 날짜를 가져올 수 있기를 원합니다. 다른 말로하면, 날짜 범위를 반복 할 수있는 방법은 무엇입니까? – martin

답변

1

다음은 기본 개념을 보여줍니다, 당신은 스스로의 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 
+0

다음 날로 이동하려면 초를 추가하면됩니다. 고마워. 매력처럼 작동합니다. – martin

1

당신이 파일의 범위 다운로드 [01-31]를 사용할 수 있습니다

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

감사합니다.이 기능에 대해 알지 못했습니다. 일이 훨씬 쉬워 지지만 날짜가 여러 달 또는 몇 년 (그리고 다른 달의 다른 날 수를 처리해야 함)으로 확산되는 일반적인 경우는 해결되지 않습니다. – martin

+0

'[...]'/'{...}'과'-o '# 1_ # 2'' – kev

+0

'날짜 = 2012- [01-12] - [01-31] o '2012- # 1- # 2.pdf'알아요,하지만 2012-01-31은 있지만 2012-02-31은 없다는 사실은 어떻게 처리할까요? – martin

관련 문제