У меня есть задание, и я должен прочитать список веб-сайтов из текстового файла (sites.txt) и проверить, нет ли на каких-либо из них статических изменений с момента последнего запуска сценария.Мой ввод
https://en.wikipedia.org/wiki/Stack_Overflow
https://en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Linus_Torvalds
Если какой-либо из веб-сайтов не работает, он должен напечатать на stderr имя адреса и сообщение FAILED, как в этом примере вывода.
https://en.wikipedia.org/wiki/Stack_Overflow FAILED
Также, есливходной текстовый файл содержит #, он должен игнорировать строку как комментарий.Моя попытка состояла в том, чтобы создать 2 html-файла old.html и new.html и проверить оператор if, если вычитание html-файлов отличается от 0. Моя проблема в том, что мои выходные данные странно отличаются от того, что я ожидал, и что команда curlвсегда предполагает, что сайты не работают.У меня есть вывод:
FAILED/en.wikipedia.org/wiki/Stack_Overflow
FAILED/en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Linus_Torvalds FAILED
Вот мой код:
#!/bin/bash
while read line || [ -n "$line" ]; do
[[ "$line" = "\#*" ]] && continue
if [ "$(curl -s --head --request GET "$line" | grep "200 OK" > /dev/null)" ]; then
mv new.html old.html 2> /dev/null
curl "$line" -L --compressed -s > new.html
DIFF_OUTPUT="$(diff new.html old.html)"
if [ "0" != "${#DIFF_OUTPUT}" ]; then
echo "$line Changed"
fi
else
echo "$line FAILED" >&2
fi
done <"$1"
Кто-нибудь может мне помочь?