2014-06-09 2 views
1

수동 펄 인수로 날짜를 만드는 방법 : 2014년 6월 9일 오늘의 날짜와 인 data.xml이펄 :이 같은 터미널에서 스크립트를 실행 스크립트

# perl renew.pl 2014-06-09 data.xml 

파일 스크립트 업데이트입니다.

이 스크립트를 cron으로 실행하고 싶습니다. 자동으로 현재 날짜를 삽입해야합니다. 나는 해봤 항상

# perl renew.pl date +"%Y/%m/%d" data.xml <br> 
or <br> 
# perl renew.pl 'date +"%Y/%m/%d"' data.xml<br> 
or <br> 
# TODAY=`date '+%Y%m%d'`; perl renew.pl TODAY data.xml 

그러나 같은 것을 가지고 같은 응답 : /usr/lib/perl5/site_perl/5.8.8/에서 숫자 GE에서 초기화되지 않은 값의

사용 (> =) 날짜/석회질/PP.pm 라인 1547 라인 523 날짜 : 석회질 :: PP :: Add_Delta_Days() : 날짜 : 석회질 :: Add_Delta_Days() : renew.pl에서 유효한 날짜

인수로 날짜를 삽입하는 다른 변형이 있습니까? 단 1 호출 할 때 오늘 날짜로 기본값으로

perl renew.pl $(date +%Y%m%d) data.xml 

당신은 또한 당신의 renew.pl을 편집 할 수 있습니다 :

export TODAY=$(date +%Y%m%d); perl renew.pl $TODAY data.xml 

또는 중간 변수없이 :

+0

명령 줄에서 전달하는 대신 기본 제공 함수를 사용하지 않는 이유 –

+0

명령 줄 예제에서 다른 날짜 구분 기호를 사용하고 있습니다. 코드에 액세스하지 않으면 그 코드가 중요한지 여부를 알기 어렵습니다. – tripleee

답변

2

셸 crond가 무엇을 사용하는지 잘 모르겠습니다. 어쩌면 그것은 당신의 로그인 껍질일까요? 그것은 나를 위해하는 것처럼 sh 또는 bash를 사용하는 경우

perl renew.pl "`date +"%Y/%m/%d"`" data.xml 

또는

perl renew.pl "$(date +"%Y/%m/%d")" data.xml 

`...` 일명 $(...) 그 안에 명령을 실행 더 읽기를 원하고, 그 출력을 보간. 주변의 큰 따옴표는 결과가 하나의 인수로 전달되도록 공백과 기타 등을 이스케이프합니다. (. 그들은 여기에 필요하지 않을 나는 습관에서 사용할 죄송한 것보다는 안전합니다.).


의 당신이 뭘하려 살펴 보자 :

  • perl renew.pl date +"%Y/%m/%d" data.xml 같이 date, +%Y/%m/%ddata.xml 전달 인수.

    앞에서 언급 한 백틱이 누락되었습니다.

  • perl renew.pl 'date +"%Y/%m/%d"' data.xmldate +"%Y/%m/%d"data.xml을 전달합니다.

    앞에서 언급 한 백틱이 누락되었습니다.

  • TODAY=date '+%Y%m%d'; perl renew.pl 오늘 data.xml은 인수로 TODAYdata.xml을 전달합니다.

    마침내 백틱을 사용했지만 실제로 결과를 저장 한 변수를 사용하지 않았습니다. TODAY 대신 "$TODAY"을 사용해야합니다.

+0

고마워요! 그게 내가 필요한거야! – glukomania

+0

질문에 대한 답변이 있으면 대답 옆의 표시를 확인하십시오. 스택 오버플로에 오신 것을 환영합니다 :) – ikegami

1

는 다음 bash의 중 하나를 시도 할 수 매개 변수 :

use strict; 
use warnings; 

use Time::Piece; 

unshift @ARGV, localtime->strftime("%Y-%m-%d") if @ARGV == 1; 

다음 :

perl renew.pl data.xml 
관련 문제