"echo" druckt die Optionen in crontab

"echo" druckt die Optionen in crontab

Ich verwende Rasbian 3.12.26+ auf einem Pi-Modell B.

So sieht mein Cron-Eintrag aus:

* * * * * 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

So sieht mein Protokoll aus:

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

Wenn ich den Befehl jedoch einfach in Bash einfüge, funktioniert er wie vorgesehen:

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

Und die Ausgabe ist

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

Wobei die erste Zeile wie vorgesehen unterstrichen, fett und gelb ist.

Aus irgendeinem Grund gibt das Echo bei der Ausführung durch eine Crontab das „-en“ aus, anstatt es als Argument zu verwenden. Infolgedessen werden die Farb-Escape-Sequenzen nicht maskiert.

Was gibt?

Antwort1

Es ist wahrscheinlich, dass cron /bin/sh verwendet. Überzeugen Sie sich selbst, indem Sie die Ausgabe des Folgenden vergleichen:

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

Das obige Ergebnis ergibt die Ausgabe, die Sie erhalten

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

Während der gleiche Befehl unter Bash die gewünschte Ausgabe erzeugt

verwandte Informationen