문자열과 정수를 합치려면 두 변수를 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}
때문에 두 변수의 값이 무엇일지, 같아야 할지 달라야 할지 알 수 없습니다.