Problema estranho com crontab e echo

Problema estranho com crontab e 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 que estou recebendo -ea saída? Tanto o crontab quanto o bash estão usando/bin/echo

Responder1

Eles provavelmente estãonãoambos usando /bin/echo. O ambiente usado cronprovavelmente é diferente do seu ambiente interativo. Especifique o caminho completo para ter certeza.

Responder2

Esta é uma das razões pelas quais as pessoas recomendam o uso printfem vez de echoportabilidade.

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

O shell que cronusa é shem vez do Bash. No meu sistema, shé realmente Dash e echonão tem -e. Então -etorna-se apenas mais uma string a ser produzida. Outras versões do shell Bourne ou shells que fornecem sua funcionalidade podem ter arquivos -e.

Se você usar echosem o caminho completo em seu crontab, você obterá o shell integrado echoem vez de /bin/echo. Na linha de comando, se você estiver usando o Bash, echosem o caminho completo, você terá a versão interna do Bash.

informação relacionada