Como verificar variáveis ​​corretamente no Bash?

Como verificar variáveis ​​corretamente no Bash?

Eu tenho o seguinte código:

#!/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

Na pasta conhecida está um arquivo com o nome Router que possui o endereço MAC. As variáveis ​​são as mesmas em um ponto, mas a instrução if aparentemente não funciona. Passei 4 horas tentando entender o que está errado, mas não consigo ver nada.

Responder1

Eu encontrei o problema!!

Parece que enquanto o arp-scan está em execução, ele mostra o endereço MAC de forma diferente de tempos em tempos.

Por exemplo, se eu verificar a rede agora, meu roteador será exibido assim:

192.168.1.1 xx:xx:xx:xx:xx:xx (Desconhecido)

Após algumas varreduras, o roteador aparecerá como:

192.168.1.1 xx:xx:xx:xX:xX:xx (Desconhecido)

Algumas letras são maiúsculas. Acho que estraguei o Linux. Então encontrei a resposta para o meu problema. Vou converter todas as letras em minúsculas para comparação.

Desculpe por incomodar!

informação relacionada