2012-09-20 37 views
18

我目前正在編寫一個bash腳本,並使用了捲曲。我想要做的是獲得一個特定的響應頭。捲曲「寫出」特定標題的值

基本上我想這個命令的工作:

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

不幸的是,看起來好像-w,--write輸出選項,只有一組,它支持變量,不能打印任何報頭中響應的一部分。我是否需要自己解析curl輸出來獲取ETag值,還是有辦法讓curl打印特定頭文件的值?

顯然像

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

的伎倆,但它會更好有捲曲過濾頭。

回答

10

爲「-w」指定的變量不直接連接到http標頭。 所以看起來你對你自己去「解析」他們:

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

可以打印一個特定的頭與一個awk或者sed命令,但HTTP報頭使用CRLF行結束。

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

使用awk,您可以添加FS=": "如果值包含空格:

awk 'BEGIN {FS=": "}/^Content-Type/{print $2}'