
我必須將兩個變數與 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}
,所以我無法判斷兩個變數的值可能是什麼,或者它們是否應該相同或不同。