두 개의 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:');