#!/bin/bash
HEAD=`curl -sIX HEAD http://gert.iriscouch.com/www/test`
echo "$HEAD"
if [[ $HEAD =~ Etag:\ \"(.*)\" ]]; then
echo "${BASH_REMATCH[1]}"
fi
HEAD=`curl -sIX HEAD http://gert.iriscouch.com/www/test/user.png`
echo "$HEAD"
if [[ $HEAD =~ Etag:\ \"(.*)\" ]]; then
echo "${BASH_REMATCH[1]}"
fi
在第二个HEAD上,它与Etag不匹配?
HTTP/1.1 200 OK
Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
Etag: "2-bd7278b9cc8b0ddaf7c863102f42f246"
Date: Thu, 01 Sep 2011 19:47:02 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 207
Cache-Control: must-revalidate
2-bd7278b9cc8b0ddaf7c863102f42f246
HTTP/1.1 200 OK
Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
ETag: "2-bd7278b9cc8b0ddaf7c863102f42f246"
Date: Thu, 01 Sep 2011 19:47:03 GMT
Content-Type: image/png
Content-MD5: SS+3YnbRbRQ4uiJKcnFkdA==
Content-Length: 4003
Cache-Control: must-revalidate
Accept-Ranges: bytes
答案 0 :(得分:2)
情况不同。
if [[ $HEAD =~ Etag:\ \"(.*)\" ]]; then
Etag: "2-bd7278b9cc8b0ddaf7c863102f42f246"
ETag: "2-bd7278b9cc8b0ddaf7c863102f42f246"
使用
if [[ $HEAD =~ [Ee][Tt][Aa][Gg]:\ \"(.*)\" ]]; then
我希望这会有所帮助
答案 1 :(得分:2)
来自http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
字段名称不区分大小写。
错误在您的代码中,'ETAG','etag','ETag'和'Etag'都是标题值的同等有效表达式。
但是,我在下一个版本(1.2)中更改了CouchDB,以便在“严格按照您发送的内容”原则上始终使用“ETag”。