次の 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 コンテンツを保持しながら、同時に応答ヘッダーの 1 つをそのファイルのファイル名の一部として使用したいと考えています。
最終的なファイル コンテンツがきれいにフォーマットされた json である限り、コマンドのどの時点で jq 部分が発生するかは実際には気にしません。
答え1
パイプを実行すると、json ファイルが作成されます。パイプを開始する前にファイル名を確定できない場合は、パイプを中断する必要があります。
-D
および フラグを使用して-o
、応答ヘッダーと応答本文を 2 つの別々の一時ファイルにダンプできます。後で、これらの一時ファイルからデータを抽出してファイル名を作成し、応答本文を書き込むことができます。
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"