Ответ 1
Переменные, указанные для "-w", напрямую не связаны с заголовком http. Так что, похоже, вам нужно "разобрать" их самостоятельно:
curl -I "server/some/resource" | grep -Fi etag
В настоящее время я пишу 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/'
делает трюк, но было бы лучше иметь завиток, фильтрующий заголовок.
Переменные, указанные для "-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}'