2012-09-20 17 views
18

現在、私はbashスクリプトを作成していますが、私はcurlを使用しています。私がしたいのは、応答の特定のヘッダを取得することです。特定のヘッダーのCurl "write out"値

curl -I -w "%{etag}" "server/some/resource" 

残念ながら、それは-wは、--writeアウトオプションは、それがサポートする変数のセットを持っているかのように思えるし、任意のヘッダを印刷することはできません。

は基本的に私は、このコマンドが仕事をしたいです応答の一部ETag値を取得するためにカール出力を自分で解析する必要があるのですか、または特定のヘッダーの値をカールさせる方法がありますか?

は明らか

curl -sSI "server/some/resource" | grep 'ETag:' | sed -r 's/.*"(.*)".*/\1/' 

のようなものは、トリックを行いますが、カールフィルタにヘッダを持っているよりよいだろう。

答えて

10

"-w"に指定された変数は、httpヘッダーに直接接続されていません。 自分でそれらを「解析」しなければならないようなので、それが見えます:

curl -I "server/some/resource" | grep -Fi etag 
15

あなたは、単一のsedやawkのコマンドを使用して、特定のヘッダを印刷しますが、HTTPヘッダーのCRLFの改行コードを使用することができます。

awk 'BEGIN {FS=": "}/^Content-Type/{print $2}' 
:値にスペースが含まれている場合は、 FS=": "を追加することができますawkので

curl -sI stackoverflow.com | tr -d '\r' | sed -En 's/^Content-Type: (.*)/\1/p' 

関連する問題