Bashで文字列を比較する

Bashで文字列を比較する

2つの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 

ベストアンサー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:');

おすすめ記事