我目前正在写一个bash脚本,我正在使用curl。 我想要做的是获得一个特定的响应头。
基本上我想要这个命令的工作:
curl -I -w "%{etag}" "server/some/resource"
不幸的是,-w,–write-out选项似乎只有一组支持的variables,不能打印任何属于响应的头部。 我是否需要自己分析curl输出以获取ETag值,还是有办法让curl打印特定头文件的值?
显然有点像
curl -sSI "server/some/resource" | grep 'ETag:' | sed -r 's/.*"(.*)".*/\1/'
做的伎俩,但它会更好,有curl过滤标题。
为“-w”指定的变量不直接连接到http头。 所以看起来你必须自己“解析”它们:
curl -I "server/some/resource" | grep -Fi etag
您可以使用单个sed或awk命令打印特定的头文件,但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}'