如何在 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。所以我找到了我的問題的答案。我會將所有字母轉換為小寫以進行比較。

對不起打擾!

相關內容