Как правильно проверять переменные в 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

В папке known есть файл с именем Router, который имеет MAC-адрес. Переменные в какой-то момент совпадают, но оператор 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. Так что я нашел ответ на свою проблему. Я переведу все буквы в строчные для сравнения.

Извините за беспокойство!

Связанный контент