¿Cómo verificar variables correctamente en Bash?

¿Cómo verificar variables correctamente en Bash?

Tengo el siguiente 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

En la carpeta conocida hay un nombre de archivo Router que tiene la dirección MAC. Las variables son las mismas en un momento, pero la declaración if aparentemente no funciona. Pasé 4 horas tratando de entender qué está mal pero no puedo ver nada.

Respuesta1

¡¡Encontré el problema!!

Parece que mientras se ejecuta arp-scan, muestra la dirección MAC de forma diferente de vez en cuando.

Por ejemplo, si escaneo la red ahora, mi enrutador se mostrará así:

192.168.1.1 xx:xx:xx:xx:xx:xx (Desconocido)

Después de algunos escaneos, el enrutador aparecerá como:

192.168.1.1 xx:xx:xx:xX:xX:xx (Desconocido)

Algunas letras están en mayúsculas. Creo que arruiné Linux. Entonces encontré la respuesta a mi problema. Convertiré todas las letras a minúsculas para comparar.

¡Perdón por molestar!

información relacionada