cURL - 파일 이름의 일부로 특정 응답 헤더를 사용합니다.

cURL - 파일 이름의 일부로 특정 응답 헤더를 사용합니다.

이 bash 명령을 사용하여 json http 응답 본문을 파일에 작성합니다.

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 콘텐츠를 유지하면서 동시에 응답 헤더 중 하나를 해당 파일의 파일 이름의 일부로 사용하고 싶습니다.
결국 파일 내용이 꽤 형식화된 json인 한 명령에서 jq 부분이 발생하는 지점은 실제로 신경 쓰지 않습니다.

답변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"

관련 정보