IPv6 주소가 포함된 두 변수를 비교하는 방법은 무엇입니까?

IPv6 주소가 포함된 두 변수를 비교하는 방법은 무엇입니까?

문자열과 정수가 함께 있도록 두 변수를 ipv6과 비교해야 합니다.

나는 아래와 같이 시도했다.

if [[ "$ipvsrc" -eq "$ipvdst" ]];
       then echo -e "Value OK";  fi

오류 출력은 다음과 같습니다:

line 7: [[: 2a00: value too great for base (error token is "2a00")

그 다음에:

if [ $ipvsrc -eq $ipvdst];
       then echo -e "Value OK";  fi

오류 출력은 다음과 같습니다:

line 7: [: 2a00:0da9:000a:2010:1fc:0:2174:1951: integer expression expected

그 다음에:

if [[ "$ipvsrc" == "$ipvdst" ]];
       then echo -e "Value OK";
fi

출력: 없음

변수는 다음과 같이 설정됩니다.

ipvsrc=$(cat config_src | grep ipvsrc |grep -v localhost | cut -d '=' -f2);

ipvdst=$(cat config_dst | grep -i ipvdst | cut -d '=' -f2);

원하는 출력을 얻는 방법에 대한 힌트가 있습니까? 많은 감사를 드립니다!

답변1

bash마지막 예는 정확합니다 ( 또는 ksh93이해하는 쉘을 사용한다고 가정 [[ ... ]]하지만 그렇게하는 것 같습니다).

if [[ "$ipvsrc" == "$ipvdst" ]]; then
    echo "Value OK";
fi

비교하는 두 변수에는 문자열이 포함되어 있으므로 이를 인용하여 사용하는 것이 ==정확합니다.

출력이 나오지 않는 이유는 아마도 단순히 비교 결과가 false로 평가되었기 때문일 것입니다. 즉, 두 문자열이 동일하지 않기 때문일 것입니다.

아쉽게도 의 내용을 모르기 config_{src,dst}때문에 두 변수의 값이 어떻게 될지, 서로 같아야 할지 달라야 할지 알 수 없습니다.

관련 정보