
문자열과 정수가 함께 있도록 두 변수를 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}
때문에 두 변수의 값이 어떻게 될지, 서로 같아야 할지 달라야 할지 알 수 없습니다.