我正在尝试创建一个bash脚本。
arp -a
命令查找IP地址所在的行。#!/bin/bash
# Xdetect
echo "Welcome to Xdetect"
echo "Enter IP address of device to monitor (usually default gateway)"
read IP
MAC=arp -a | grep $IP | awk {'print $4'}
echo =$MAC
while : 'arp -a | grep $IP | awk {'print $4'}' = $MAC
do
echo "Mac has not changed"
sleep 2
done
脚本不起作用,即使mac地址发生变化,它也会循环并回显MAC has not changed
。
在它循环之前,出现错误:Xdetect.sh 9: Xdetect.sh: -a: not found
我该如何解决这个问题?
答案 0 :(得分:2)
在test
声明中,您的意思是:
而不是空命令while
吗?像这样的东西,没有反模式grep | awk:
MAC=$(arp -a | awk -v ip="$IP" '$2 == "("ip")" { print $4 }')
echo "$MAC"
while test $(arp -a | awk -v ip="$IP" '$2 == "("ip")" { print $4 }') = "$MAC"; do
echo "Mac has not changed"
sleep 2
done
您反复打印“Mac未更改”消息的观察结果是因为:
是一个空命令,始终返回true并忽略(仅扩展)其参数。你的代码有效吗
while true; do
echo echo "Mac has not changed"
sleep 2
done