Bash で変数を正しく検証するにはどうすればよいですか?

Bash で変数を正しく検証するにはどうすればよいですか?

次のコードがあります:

#!/bin/bash
FILES=known/*
arp-scan -l > temp_scan.log
cat temp_scan.log | while read line
do
        for f in $FILES
        do
                echo "--------------------------------"
                ADDR=$(cat $FILES)
                MAC=$(echo $line | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}')
                sleep 0.1
                #echo "$ADDR"
                echo "$MAC"

                if [[ "$ADDR" == "$MAC" ]]
                then
                        echo "found"
                else
                        echo "not fount"
                fi
        done
done

既知のフォルダには、MAC アドレスを持つ Router というファイル名があります。変数はある時点では同じですが、if ステートメントは明らかに機能しません。何が間違っているのかを理解しようと 4 時間費やしましたが、何もわかりません。

答え1

問題を見つけました!!

arp-scan の実行中、MAC アドレスが時々異なって表示されるようです。

たとえば、今ネットワークをスキャンすると、ルーターは次のように表示されます。

192.168.1.1 xx:xx:xx:xx:xx:xx (不明)

数回スキャンすると、ルータは次のように表示されます。

192.168.1.1 xx:xx:xx:xX:xX:xx (不明)

一部の文字が大文字です。Linux を台無しにしたようです。そこで、問題の解決策を見つけました。比較のために、すべての文字を小文字に変換します。

迷惑をかけてごめんなさい!

関連情報