Tente:
while read url
do
echo "$url"
curl -sI "$url" | head -1
done < list-of-urls > output-file
Isso apenas lê cada linha de entrada do arquivo list-of-urls
, retorna-a e obtém a primeira linha de saída de curl -I
nessa URL (que é o status da resposta HTTP). A saída do loop inteiro vai para output-file
.
Para testar vários URLs de uma vez, use paralelo GNU :
GNU parallel makes sure output from the commands is the same output as
you would get had you run the commands sequentially. This makes it
possible to use output from GNU parallel as input for other programs.
Por exemplo:
parallel -a list-of-urls 'echo {}; curl -sI {} | head -1' > output-file
Não há garantias de que a saída esteja em ordem, no entanto:
$ cat output-file
http://example.com
HTTP/1.1 200 OK
http://google.com
HTTP/1.1 302 Moved Temporarily
http://stackoverflow.com
HTTP/1.1 200 OK
http://trafficinviter.com
HTTP/1.1 200 OK