如何比較兩個包含 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},所以我無法判斷兩個變數的值可能是什麼,或者它們是否應該相同或不同。

相關內容