/ bin / sh: синтаксическая ошибка: неопределенная строка в кавычках - PullRequest
39 голосов
/ 29 марта 2011

Я пытаюсь получить cronjob для передачи выходных данных в устаревший файл в указанной (папке) папке.

Моя запись в crontab выглядит примерно так:

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

Что я не понимаю, так это то, что когда я набираю эту команду на консоли, я получаю правильную строку:

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

Что является причиной этой ошибки и как я могу ее исправить?

Информация о версии bash:

GNU bash, версия 4.1.5 (1) -релиз (x86_64-pc-linux-gnu)

Ответы [ 3 ]

94 голосов
/ 29 марта 2011

Вы должны исключить знаки процента в вашем crontab:

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

Знаки процента (%) имеют специальное значение в crontabs. Они интерпретируются как символы новой строки.

3 голосов
/ 29 марта 2011

Поместите команду date в скрипт. cron не обязательно запускает оболочку, как вы думаете.

0 голосов
/ 29 марта 2011

убедитесь, что у вас есть shebang #!/bin/bash в качестве первой строки в вашем скрипте.Также, как указано bmargulies, поместите команду date в сценарий, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...