2011-03-29 6 views
33

지정된 (폴더) 위치의 날짜가 지정된 파일로 출력을 파이프로 연결하려고합니다./bin/sh : 구문 오류 : 종료되지 않은 인용 문자열

내의 crontab 엔트리는 다음과 같습니다 : 무엇

echo $(date "+/home/oompah/logs/%Y%m%d.test.log") 
/home/oompah/logs/20110329.test.log 

:

* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/%Y%m%d.test.log") 

내가 이해하지 못하는 것은 내가 콘솔에서이 명령을 입력 할 때, 내가 올바른 문자열을 얻을 수 있다는 것입니다 이 오류의 원인과 해결 방법은 무엇입니까?

bash는 버전 정보는 다음과 같습니다

GNU bash는 버전 4.1.5 (1) -release (x86_64에-PC-리눅스 GNU)이

+1

http://askubuntu.com 또는 http://unix.stackexchange.com –

+0

에 속해 있습니다. @Let_Me_Be : 귀하의 요점을 볼 수는 있지만, 매우 희박한 SO가 퍼질 위험이 있습니다. 질문에 대답하기 위해 몇 십만 명 이상의 사람들이 몇 명이나되는 몇 개의 "전문가"사이트. 이 질문은 관련성이 있습니다. 간단하고 (간결하고 명확하게하기 위해) 간단하게 유지했지만 cron이 실행하는 작업 인 Python 및 C++에 대한 질문을 포함하기 쉽게 확장 할 수 있기 때문입니다. – oompahloompah

+0

글쎄, 그건 메타에 대한 토론이다. –

답변

79

당신은 당신의 crontab에 퍼센트 기호를 excape해야

* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/\%Y\%m\%d.test.log") 

퍼센트 (%) 기호가 크론 탭에서 특별한 의미가있다. 이들은 개행 문자로 해석됩니다.

+1

대단히 감사합니다. 이렇게하면 문제가 해결됩니다. vim 편집기 색칠은 문자열이 닫히지 않았 음을 보여주기 때문에 실제로이 사실을 먼저 알아야합니다. 이런!. 어쨌든 덕분에, 당신은 절망의 오후 나를 구해 줬어. :) – oompahloompah

+0

. 천만에. 나는 또한 그 백분율 기호로 여러 번 고심했다. 마침내 나는 그것을 배웠다;) – bmk

+0

알아두면 매우 유용하다 - 이것에 물릴 뿐이다! –

3

스크립트 내에서 date 명령을 넣습니다. cron은 쉘이라고 생각하지는 않습니다.

+0

트윈 피크와 비슷한 문구에 +1 +1 : – user237419

+0

무슨 뜻인지 잘 모르겠습니다. 나는 스크립트의 출력을 파일로 보내기를 원한다. 스크립트를 다시 작성하여 모든 인쇄 문이 stdout 대신 파일로 리다이렉트되도록하는 것을 기쁘게 생각하지 않습니다 - 제가 누락 된 것이 아니라면? - 명확히하십시오 – oompahloompah

+0

crontab에 $ (날짜 ...)를 가질 필요가 없습니다. 그것을 test.sh에 넣으십시오. – bmargulies

0

스크립트의 첫 번째 줄에 새끼 고양이 #!/bin/bash이 있는지 확인하십시오. 또한 bmargulies으로 명시된대로 가능하면 date 명령을 스크립트에 넣으십시오.

관련 문제