cURL — использовать определенный заголовок ответа как часть имени файла

cURL — использовать определенный заголовок ответа как часть имени файла

Я использую эту команду bash для записи тела ответа http json в файл:

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

Но на самом деле мне хочется чего-то вроде этого:

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

Итак, на естественном языке:
Я хочу записать ответ на запрос cURL в файл, сохранив его довольно отформатированное содержимое json, и в то же время использовать один из заголовков ответа как часть имени файла указанного файла.
Мне все равно, в какой момент в команде происходит часть jq, пока содержимое файла в конечном итоге представляет собой довольно отформатированное содержимое json.

решение1

Файл json будет создан при запуске конвейера. В вашем случае, если имя файла не может быть финализировано до запуска конвейера, вам придется прервать конвейер.

Вы можете использовать -Dфлаги и -oдля дампа заголовка ответа и тела ответа в два отдельных временных файла. Позже вы можете извлечь данные из этих временных файлов, чтобы составить имя файла, а затем записать тело ответа.

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"

Связанный контент