IPv6アドレスを含む2つの変数を比較するには?

IPv6アドレスを含む2つの変数を比較するには?

文字列と整数を合わせるには、両方の変数を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

比較する2つの変数には文字列が含まれているため、それらを引用して使用するのは==正確です。

出力が得られない理由は、おそらく比較が偽であるためです。つまり、2つの文字列は同じではありません。

残念ながら、内容がわからないconfig_{src,dst}ので、両方の変数の値が何であるか、同じであるかどうかは異なるかどうかはわかりません。

おすすめ記事