이 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"