bc命令を使用して2つのIPアドレスを比較しようとしていますが、テストでは数字の小さいIPはキャプチャされません。
これは私のコードです。
TEST=$(echo "$i < $IP_BRD && $i > $IP_LOW " | bc -q )
TEST
結果が 1 の場合、プロセスは続行され、それ以外の場合は終了します。
以下の例を確認してください。
++ echo '191.35 < 187.254 && 191.35 > 184.1 '
+ TEST=0
++ echo '191.35 < 191.254 && 191.35 > 188.1 '
++ bc -q
+ TEST2=0
++ echo '191.35 < 195.254 && 191.35 > 192.1 '
++ bc -q
+ TEST3=0
+ [[ 0 = 1 ]]
+ [[ 0 = 1 ]]
+ [[ 0 = 1 ]]
ネットワークでは、echo '191.35 < 191.254 && 191.35 > 188.1 '
IP 191.35は191.254未満ですが、IPとは見なされません。
私はTEST=$(echo "$i < $IP_BRD && $i > $IP_LOW " | bc -q )
大きな成功を収めずに二重引用符を使ってみました。
それを修正する方法についてのアイデアはありますか?
ベストアンサー1
echo '191.35 < 191.254 && 191.35 > 188.1 ' 行では、IP 191.35 は 191.254 未満ですが、そのままとは見なされません。
いいえ、そうではありません:191.35 == 191.350> 191.254。 bc は数値的に比較しますが、IP を直接比較することはできません。まず、IPを整数に変換する必要があります。その後、外部ツールを使用せずにシェル組み込み機能を使用して比較できます。
編集:このスレッドを確認してください。IPアドレスコンバータ