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

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

출력을 얻지 못하는 이유는 아마도 비교가 거짓이기 때문일 것입니다. 즉, 두 문자열이 동일하지 않습니다.

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

관련 정보