如何比较两个包含 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你的最后一个例子是正确的(假设你使用像或那样的shellksh93理解[[ ... ]],但看起来你是这样做的):

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

您比较的两个变量包含字符串,因此引用它们并使用==是正确的。

您没有得到输出的原因可能只是因为比较结果为 false,即两个字符串不相同。

不幸的是,我不知道 的内容config_{src,dst},所以我无法判断两个变量的值可能是什么,或者它们是否应该相同或不同。

相关内容