cURL: use un encabezado de respuesta específico como parte del nombre del archivo

cURL: use un encabezado de respuesta específico como parte del nombre del archivo

Estoy usando este comando bash para escribir el cuerpo de respuesta json http en un archivo:

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

Pero lo que realmente quiero es algo como esto:

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

Entonces, en lenguaje natural:
Quiero escribir la respuesta de la solicitud cURL en un archivo, preservando su contenido json con formato bonito y, al mismo tiempo, usar uno de los encabezados de respuesta como parte del nombre de dicho archivo.
Realmente no me importa en qué punto ocurre la parte jq en el comando, siempre y cuando el contenido del archivo al final tenga un formato bastante json.

Respuesta1

El archivo json se creará cuando ejecute la tubería. En su caso, si el nombre del archivo no se puede finalizar antes de iniciar la tubería, debe romper la tubería.

Puede utilizar -Dlos -oindicadores y para volcar el encabezado y el cuerpo de la respuesta en dos archivos temporales separados. Posteriormente podrá extraer datos de estos archivos temporales para componer el nombre del archivo y luego escribir el cuerpo de la respuesta.

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"

información relacionada