
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 つの変数の値がどうなるか、またはそれらが互いに同じか異なるかはわかりません。