2012-09-04 2 views
1

나는 crontab을 통해 10 분 단위로 내 소스 코드를 백업하는 bash 스크립트를 가지고 있습니다. 스크립트는 8 월 말까지 작동했습니다. 9 월 1 일 이후로 작동하지 않습니다. 내가 수동으로 실행하면파일 이름에 현재 날짜를 추가하지 않는 bash

#!/bin/sh 
date=`date +%e-%m-%y` 
cd /home/neky/python 
tar -zcf lex.tar.gz lex/ 
echo $date 

mv lex.tar.gz lex-$date.tar.gz 
mv lex-$date.tar.gz /home/neky/Dropbox/lex/lex-$date.tar.gz 

, 그것은 현재 날짜 4-09-12,이 오류 mv: target ‘4-09-12.tar.gz’ is not a directory

를 인쇄 어떤 문제가 될 수 :이 스크립트입니까?

+2

$ 날짜가 선도적 인 공간을 가지고 있으며, 당신이 할 경우'가 lex- $ 날짜 표시를 .tar.gz'에'lex- 4-09-12.tar.gz'가 보일 것입니다. – artapet

답변

2

date에는 달이 한자리 일 경우 공백이 포함되어 있습니다 (이는 새 달에 작업이 중단 된 이유 만 설명 함). 당신의 명령의 결과는 (대신 %e%d주의) 당신에게 04-09-12을 줄 것이다 대신하는, 즉

# this is what it you end up with 
mv lex.tar.gz lex- 4-09-12.tar.gz 

사용 date +%d-%m-%y을 분할된다.


당신이 정말로 이름에 공백을 원하는 경우에, 당신은 당신의 변수, 즉 인용해야합니다 :

mv lex.tar.gz "lex-$date.tar.gz" 
mv "lex-$date.tar.gz" /home/neky/Dropbox/lex/ 
0

문자 % (날짜 형식의 일부)은 cron 스크립트의 특별한 문자이므로 이스케이프 처리해야합니다.

+0

OK, 스크립트가 여러분의 crontab에 없다고 봅니다. 이 경우 분명히'%'를 인용 할 필요가 없습니다. – piokuc

관련 문제