2009-12-31 2 views
2

Следующая инструкция работает в командной строке. Но не работает в cron.Синтаксис cron для даты

myvar=`date +'%d%m'`; echo $myvar >> append.txt 

Журнал cron показывает, что выполняется только часть инструкции даты. Как использовать его в cron?

+0

Возможно, более подходит для serverfault –

ответ

2

Побег процентных знаков с обратной косой чертой (\%).

+0

Пробовал. Но не работает. – shantanuo

+0

Теперь он работает. Я тоже избегал пространства. – shantanuo

1

Мое общее правило - «не писать сценарии в файле crontab». Это означает, что я не ставил ничего, кроме простого имени сценария (с абсолютным путем) и, возможно, некоторых контрольных аргументов в файле crontab. В частности, я не размещаю перенаправление ввода/вывода или переменные в файле crontab; такие вещи входят в сценарий (shell), выполняемый заданием cron.

Это позволяет избежать неприятностей - и работает по широкому спектру вариантов cron, как древних, так и современных.

1

из man 5 crontab:

Шестое поле (остальная часть строки) определяет команду, которая будет работать. Вся командная часть строки, вплоть до символа новой строки или символа%, будет , выполненная/bin/sh, или оболочкой, указанной в переменной SHELL файла cron. Процентные знаки (%) в команде, если они не сбрасываются с помощью обратного слэша(), будут изменены на символов новой строки, а все данные после первого% будут отправлены команде в качестве стандартного ввода.

Ваши % s заменяются на символы новой строки, а последняя часть вашей команды подается в команду как stdin. Как говорит Игнасио, вам нужно избегать % s с \

Смежные вопросы