Я использую Rasbian 3.12.26+ на Pi model B.
Вот как выглядит моя запись в cron:
* * * * * sleep 11; { echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log
Вот как выглядит мой журнал:
-en \e[1;4;33m
Thu Sep 4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!
Однако когда я просто вставляю команду в bash, она работает так, как и задумано:
{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log
И на выходе получается
Thu Sep 4 14:27:51 UTC 2014
This is output from curl!
Первая строка подчеркнута, выделена жирным шрифтом и желтым цветом, как и предполагалось.
По какой-то причине при запуске crontab'ом echo печатает "-en" вместо того, чтобы принять его как аргумент. В результате последовательности цветовых экранирований не экранируются.
Что дает?
решение1
Вероятно, cron использует /bin/sh. Убедитесь сами, сравнив вывод следующих команд:
/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
Вышеприведенное дает результат, который вы получаете
/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'
В то время как та же команда под bash выдает нужный вам вывод