如何在 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

已知文件夹中有一个名为 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。所以我找到了问题的答案。我将把所有字母都转换为小写以进行比较。

对不起打扰!

相关内容