IPv6 アドレスを含む 2 つの変数を比較するにはどうすればよいですか?

IPv6 アドレスを含む 2 つの変数を比較するにはどうすればよいですか?

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 つの変数には文字列が含まれているため、引用符で囲んで使用するのが==正しい方法です。

出力が得られない理由は、おそらく比較が false と評価される、つまり 2 つの文字列が同一ではないためでしょう。

残念ながら、 の内容がわからないconfig_{src,dst}ため、 2 つの変数の値がどうなるか、またはそれらが互いに同じか異なるかはわかりません。

関連情報