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(알 수 없음)

일부 문자는 대문자입니다. 제가 리눅스를 망친 것 같아요. 그래서 나는 내 문제에 대한 답을 찾았습니다. 비교를 위해 모든 문자를 소문자로 변환하겠습니다.

방해해서 죄송합니다!

관련 정보