cURL - spezifische Antwortheader als Teil des Dateinamens verwenden

cURL - spezifische Antwortheader als Teil des Dateinamens verwenden

Ich verwende diesen Bash-Befehl, um den JSON-HTTP-Antworttext in eine Datei zu schreiben:

curl -s "http://some.domain.com/getSomeJson" | jq . | tee someJson.json;

Aber was ich wirklich will, ist so etwas:

curl -s "http://some.domain.com/getSomeJson" | jq . | tee someJson-THE_VALUE_OF_A_SPECIFIC_RESPONSE_HEADER_NAMED_X-FOO-BAR.json

Also, in natürlicher Sprache:
Ich möchte die Antwort auf die cURL-Anfrage in eine Datei schreiben und dabei den hübsch formatierten JSON-Inhalt beibehalten und gleichzeitig einen der Antwortheader als Teil des Dateinamens der besagten Datei verwenden. Es ist
mir eigentlich egal, an welcher Stelle im Befehl der JQ-Teil vorkommt, solange der Dateiinhalt am Ende hübsch formatiertes JSON ist.

Antwort1

Die JSON-Datei wird erstellt, wenn Sie die Pipe ausführen. Wenn in Ihrem Fall der Dateiname vor dem Starten der Pipe nicht endgültig festgelegt werden kann, müssen Sie die Pipe unterbrechen.

Sie können -Ddie -oFlags und verwenden, um den Antwortheader und den Antworttext in zwei separate temporäre Dateien zu schreiben. Später können Sie Daten aus diesen temporären Dateien extrahieren, um den Dateinamen zusammenzustellen und dann den Antworttext zu schreiben.

header_file="/path/to/a/file";
body_file="/path/to/anotherfile";
curl -s \
     -D $header_file \
     -o $body_file \
     "http://some.domain.com/getSomeJson";
some_header=`grep THE_VALUE_OF_A_SPECIFIC_RESPONSE_HEADER_NAMED_X-FOO-BAR $header_file | cut -d ' ' -f2 | tr -d "\n" | tr -d "\r"`
jq . $body_file | tee "someJson-$some_header.json"

verwandte Informationen