“echo” imprime as opções no crontab

0

Estou executando o Rasbian 3.12.26+ em um modelo Pi.

Aqui está a minha entrada no 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

Aqui está o meu registro:

-en \e[1;4;33m
Thu Sep  4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!

No entanto, quando eu apenas colo o comando no bash, ele funciona como esperado:

{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

E a saída é

Thu Sep  4 14:27:51 UTC 2014
This is output from curl!

Com a primeira linha sublinhada, negrito e amarelo como pretendido.

Por algum motivo, quando executado por um crontab, o eco imprime o "-en" em vez de tomá-lo como argumento. Como resultado, as seqüências de escape de cores não escapam.

O que dá?

    
por Nikita240 04.09.2014 / 16:42

1 resposta

2

Provavelmente, o cron usa / bin / sh. Veja você mesmo comparando a saída do seguinte:

/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

O texto acima produz a saída que você está obtendo

/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

Considerando que o mesmo comando sob bash produz a saída desejada

    
por 04.09.2014 / 16:49