Ich führe einen einfachen Befehl aus (einige Kafka-bezogene Dinge):
curl localhost:8083
Die Ausgabe ist sehr einfach:
root@debian:/etc/kafka# curl localhost:8083/
{"version":"0.11.0.0-cp1","commit":"6a8cf706ddc9ab6a"}root@debian:/etc/kafka#
Aber wenn ich jetzt das Hilfsprogramm jq
zum Formatieren von JSON verwende, werden weitere Zeilen hinzugefügt:
root@debian:/etc/kafka# curl localhost:8083/ | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54 100 54 0 0 1492 0 --:--:-- --:--:-- --:--:-- 1500
{
"version": "0.11.0.0-cp1",
"commit": "6a8cf706ddc9ab6a"
}
Dasselbe passiert, wenn ich es wie erwartet an less
oder weiterleite . Das hat also nichts mit sich selbst zu tun.cat
curl ... | less
jq
Meine Kenntnisse über stdin, stdout, stderr, Pipes (die einfach nur Verknüpfungen von stdout mit sdtin sind), Dateiumleitungen > < 2>
usw. erklären dieses Verhalten nicht. :(
Antwort1
Wie bei vielen UNIX-Tools curl
hängt die Ausgabe von davon ab, an welchen Gerätetyp stdout angeschlossen ist. In diesem Fall jq
ändert das Weiterleiten der Ausgabe den Typ von TTY
in pipe
, was zu unerwünschter zusätzlicher Ausgabe führt.
curl
verfügt über einen Befehlszeilenschalter -s
, der diese zusätzliche Ausgabe stummschaltet. Das Ausführen curl -s localhost:8083/ | jq
sollte das Problem daher lösen.