сравнить строку в bash

Я попытался написать следующий сценарий для сравнения двух заголовков ответа 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 
0
11.08.2017, 01:47
1 ответ

Строки заголовков, возвращаемые командами 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:');
2
28.01.2020, 02:33

Теги

Похожие вопросы