Ваш пример удивителен,% окружен двойными, простыми и обратными кавычками. Не оставляя надежды на то, что экранирование может сработать.
Tuxayo
Ответы:
126
Вы должны избежать %знаков. Они имеют особое значение в crontabs:
man (5) crontab:
Percent-signs (%) in the command, unless escaped with backslash (\),
will be changed into newline characters, and all data after the
first % will be sent to the command as standard input.
+1 Очень интересно, я тоже этого не знал. Удивлен, я не столкнулся с этим.
Кайл Смит
3
Ну, я просто столкнулся с этим. Я использовал date +%Fи получал никуда
Адамо
2
Этот синтаксис имеет какое-либо полезное использование? С SHELL=/bin/bash, я всегда могу переписать cat %Hello worldкак cat <<<'Hello world'. Я не вижу необходимости в особом синтаксисе.
Витико
@Witiko Если «специальный синтаксис», о котором вы спрашиваете, это обратная косая черта, чтобы избежать процентов, то собственный вопрос OP является примером, где он необходим: аргументы команды, которые требуют процентов, особенно программа даты, которая была бы довольно популярна в команда crontab. Если вы на самом деле спрашиваете, почему cron имеет этот гоча в первую очередь: то есть: заменяет перевод строки вместо процентов, тогда, я думаю, это так, что вы можете предоставить в одной строке, которая требуется crontab, «команду», состоящую из двух или более вспомогательных команд.
gwideman
Последний. И, как я уже говорил, с bash можно сделать то же самое. Не нужно засорять синтаксис Cron.
Witiko
7
Это не дает прямого ответа на ваш вопрос, но я бы посоветовал вам создать файл сценария в / usr / local / bin (или ~ / bin или что-нибудь подходящее) и вызвать его из cron. Проще протестировать и отредактировать.
По моему опыту, поддерживать 50 строк в crontab намного проще, чем поддерживать 50 крошечных файлов. Вам наверняка захочется превратить более длинные сценарии в файлы сценариев, но это может быть излишним.
Ответы:
Вы должны избежать
%
знаков. Они имеют особое значение в crontabs:источник
date +%F
и получал никудаSHELL=/bin/bash
, я всегда могу переписатьcat %Hello world
какcat <<<'Hello world'
. Я не вижу необходимости в особом синтаксисе.Это не дает прямого ответа на ваш вопрос, но я бы посоветовал вам создать файл сценария в / usr / local / bin (или ~ / bin или что-нибудь подходящее) и вызвать его из cron. Проще протестировать и отредактировать.
источник