Подтвердить что ты не робот

Curl "выписать" значение конкретного заголовка

В настоящее время я пишу bash script, и я использую curl. Я хочу сделать один конкретный заголовок ответа.

В основном я хочу, чтобы эта команда работала:

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

К сожалению, похоже, что опция -w, --write-out имеет только набор поддерживаемых ею переменных и не может печатать любой заголовок, который является частью ответа. Нужно ли мне самостоятельно анализировать результат завивки, чтобы получить значение ETag или есть способ сделать curl print значением определенного заголовка?

Очевидно, что-то вроде

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

делает трюк, но было бы лучше иметь завиток, фильтрующий заголовок.

4b9b3361

Ответ 1

Переменные, указанные для "-w", напрямую не связаны с заголовком http. Так что, похоже, вам нужно "разобрать" их самостоятельно:

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

Ответ 2

Вы можете печатать определенный заголовок с помощью команды 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}'