我该如何修复这个grep命令?

时间:2015-10-27 00:45:43

标签: bash

由于某种原因,此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

2 个答案:

答案 0 :(得分:0)

未经测试的代码

if [[ -n $(airbase-ng -c 6  -e "Steve's HotSpot" wlan0   | grep -q  " Client") ]]

-n表示if条件为非零,而$()在其自己的shell中执行命令以将输出推送回脚本。

Bash Programming Help

答案 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 ]]