Verwenden Sie echo
, wird automatisch ein Zeilenumbruch angehängt:
echo "`curl -s "http://myserver.com/api?param=1¶m=2"`" | sudo tee -a /var/log/myserver.log
Alternativ können Sie auch -w
ausprobieren Option, aber ich habe festgestellt, dass es irgendwie komische Zeichen auf die Konsole (aber glücklicherweise nicht auf die Datei) ausgibt:
curl -s "http://myserver.com/api?param=1¶m=2" -w "\n" | sudo tee -a /var/log/myserver.log
Am einfachsten ist es, einfach einen Zeilenumbruch mit echo
anzuhängen
curl -s "http://myserver.com/api?param=1¶m=2" | sudo tee -a /var/log/myserver.log && echo "" >> /var/log/myserver.log
Ich verwende awk 1
dafür (wobei 1
ist nur etwas, das als wahr ausgewertet wird):
$ printf a|awk 1
a
$ printf a\\n|awk 1
a
$
Es sollte mit gawk, BWK awk / nawk (das mit OS X kommt) und mawk (das mit Debian kommt) funktionieren. sed -n p
funktioniert mit sed von OS X, aber nicht mit sed von GNU.
Eine reine Bash-Alternative:
printf %s\\n "$(cat)"
Beachten Sie, dass $()
entfernt alle Zeilenvorschübe am Ende, also zum Beispiel echo $'a\n\n'|printf %s\\n "$(cat)"
druckt nur einen Zeilenvorschub.
Sie könnten auch printf %s\\n
ersetzen mit echo
, aber zum Beispiel x=-nene;echo "$x"
gibt nichts in Bash aus (außer xpg_echo
und POSIX-Modus sind aktiviert).