Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

/bin/sh: Syntax error: Unterminated quoted string

Tags:

bash

ubuntu

I am trying to get a cronjob to pipe output into a dated file in a specified (folder) location.

My crontab entry looks something like this:

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

What I don't understand is that when I type this command at the console, I get the correct string:

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

What's causing this error and how may I fix it?

bash version info is:

GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)

like image 895
oompahloompah Avatar asked Mar 29 '11 14:03

oompahloompah


2 Answers

You should excape the percent signs in your crontab:

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

Percent (%) signs have a special meaning in crontabs. They are interpreted as newline characters.

like image 144
bmk Avatar answered Oct 24 '22 05:10

bmk


Put the date command inside the script. cron isn't necessarily running the shell you think it is.

like image 38
bmargulies Avatar answered Oct 24 '22 04:10

bmargulies