文字列と整数を合わせるには、両方の変数を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}
ので、両方の変数の値が何であるか、同じであるかどうかは異なるかどうかはわかりません。