我必须将两个变量与 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}
,所以我无法判断两个变量的值可能是什么,或者它们是否应该相同或不同。