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