"echo" imprime las opciones en crontab

"echo" imprime las opciones en crontab

Estoy ejecutando Rasbian 3.12.26+ en un Pi modelo B.

Así es como se ve mi entrada 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

Así es como se ve mi registro:

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

Sin embargo, cuando pego el comando en bash, funciona según lo previsto:

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

Y la salida es

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

Con la primera línea subrayada, en negrita y en amarillo según lo previsto.

Por alguna razón, cuando se ejecuta mediante un crontab, el eco imprime "-en" en lugar de tomarlo como argumento. Como resultado, las secuencias de escape de color no se escapan.

¿Lo que da?

Respuesta1

Probablemente cron use /bin/sh. Compruébelo usted mismo comparando el resultado de lo siguiente:

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

Lo anterior produce el resultado que está obteniendo

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

Mientras que el mismo comando en bash produce el resultado que desea

información relacionada