"echo" выводит параметры в crontab

"echo" выводит параметры в crontab

Я использую 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 выдает нужный вам вывод

Связанный контент