由于某种原因,此grep
命令未执行if
语句。
#!/bin/bash
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
if airbase-ng -c 6 -e "Steve's HotSpot" wlan0 | grep -q " Client"
then
clear
echo "SomeOne connected to your Hotspot"
fi
答案 0 :(得分:0)
未经测试的代码
if [[ -n $(airbase-ng -c 6 -e "Steve's HotSpot" wlan0 | grep -q " Client") ]]
-n
表示if条件为非零,而$()
在其自己的shell中执行命令以将输出推送回脚本。
答案 1 :(得分:0)
你没有(修复grep)。
请注意,您的代码正在测试grep的退出值,而不是生成的文本字符串。
您可以做的是将您使用的命令的结果分配给一个或两个变量,然后测试正确的变量。这也允许您回显变量以查看正在发生的事情:
#!/bin/bash
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
result="$(airbase-ng -c 6 -e "Steve's HotSpot" wlan0 | grep "Client")"
exitval="$?"
echo "the var is $result"
if [[ $exitval == 0 ]]
then
clear
echo "SomeOne connected to your Hotspot"
fi
如果你真的需要测试grep的字符串输出,那么改变:
if [[ $exitval == 0 ]]
到
if [[ -n $result ]]