Как вывести первую строку результата curl в файл с помощью bash-скрипта

#bash #curl #grep

#bash #curl #grep

Вопрос:

Я хочу прочитать файл URL-адресов, свернуть каждый URL-адрес и получить только первую строку, содержащую HTTP-код. Я работаю под управлением Windows 10 внутри Cmder.

 #!/bin/bash
input="urls.csv"
truncate -s 0 dest.csv
while IFS= read -r var
do
    result= `curl -I ${var%$'r'} | grep HTTP $result`
echo "$var $result" >> dest.csv
done < "$input"
  

однако выходной файл пуст, спасибо

Комментарии:

1. Вы также получаете кучу ошибок?

2. @thatotherguy нет, я не вижу ошибки, я запускаюсь внутри Cmder под Windows 10

Ответ №1:

Предполагая, что urls.csv это всего лишь простой список URL-адресов, и вы работаете в системе Linux (или любой другой системе, которая имеет /dev/null ), следующая команда отправит запросы HEAD на каждый URL и выведет их рядом с кодами ответа HTTP.

 sed 's/^/url = /; s/r?$/n-o /dev/null/' urls.csv |
curl -s -K- -w '%{http_code} %{url_effective}n' -I >outfile
  

смотрите справочную страницу curl для получения дополнительной информации.

Комментарии:

1. Привет, спасибо, мне не удалось запустить его в Cmder Windows 10, но в Linux он работал нормально, теперь вы можете сказать мне, как вывести HTTP-код URL в файле? Спасибо

Ответ №2:

В ответ на ваш запрос о выводе HTTP-кода это указано во второй строке заголовка. Вы можете получить это с помощью:

 export IFS=$; # This is required to stop everything coming out on one line!
curl -i <domain> | head -n 2