Problema extraño con crontab y echo

Problema extraño con crontab y echo
$ echo -e "test1\ntest2" > logfile

$ echo -e "test1\ntest2" >> logfile

$ cat logfile
test1
test2
test1
test2

$ rm logfile

$ crontab -e
* * * * * echo -e "test1\ntest2" >> logfile

$ sleep 160

$ cat logfile
-e test1
test2
-e test1
test2

¿Por qué aparece el mensaje -een el resultado? Tanto crontab como bash están usando/bin/echo

Respuesta1

probablemente seannoambos usando /bin/echo. El entorno utilizado cronprobablemente sea diferente de su entorno interactivo. Especifique la ruta completa para estar seguro.

Respuesta2

Esta es una de las razones por las que la gente recomienda su uso printfen lugar de echopor portabilidad.

* * * * * printf "test1\ntest2\n" >> logfile

El shell que cronutiliza es shen lugar de Bash. En mi sistema, shes realmente Dash y echono tiene -e. Entonces -ese convierte en una cadena más para generar. Es posible que otras versiones del shell Bourne o shells que proporcionen su funcionalidad tengan -e.

Si lo usa echosin la ruta completa en su archivo crontab, obtendrá el shell integrado echoen lugar de /bin/echo. En la línea de comando, si está usando Bash, echosin la ruta completa obtendrá la versión incorporada de Bash.

información relacionada