Я попытался написать следующий сценарий для сравнения двух заголовков ответа HTML, однако я попал в условие else
, несмотря на то, что распечатал заголовок, хранящийся в переменной $ a
Я получаю точно такое же значение.
#!/bin/bash
echo
echo "Connecting to www.cloudflare.com...";
curl -Is "https://www.cloudflare.com/" > file1.txt;
a=$(cat file1.txt | grep Server);
echo "$a";
echo
echo "Connecting directly to www.amazon.com...";
curl -Iks "https://www.amazon.com/" > file2.txt;
b=$(cat file2.txt | grep Server);
echo "$b";
echo
if [ "$a" == "Server: cloudflare-nginx" ]; then
echo "This connection is going via CloudFlare"
else
echo "This connection is NOT going via CloudFlare"
echo "$a"
fi
Строки заголовков, возвращаемые командами curl
, имеют ^M
перед новой строкой. Вы можете изменить if
, чтобы использовать регулярное выражение:
if [[ "$a" =~ "Server: cloudflare-nginx" ]]; then
echo "This connection is going via CloudFlare"
else
echo "This connection is NOT going via CloudFlare"
echo "$a"
fi
Вы также можете удалить \r
, изменив строку:
a=$(cat file1.txt | tr -d '\r' | grep '^Server:');