2015-10-27 2 views
-3

Эта команда grep не делает заявление if по какой-либо причине.Как исправить эту команду grep?

#!/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

Как выглядит выход «airbase-ng -c 6 -e» Steve's HotSpot «wlan0'? –

+0

03:14:42 Создан интерфейс отвода at0 03:14:42 Попытка установить MTU на at0 до 1500 03:14:42 Началась точка доступа с BSSID 1E: AB: 15: 29: 8F: 14. – Mohamed

+0

@Mohamed: Если это результат, то почему вы ожидаете, что 'grep -q" Client "будет указывать на успех (и, таким образом, ввести предложение' if'), учитывая, что вывод не содержит '' Client '' ? Как правило, добавьте образец/ожидаемый ввод/вывод в _question_ - не к комментариям - и предпочтительно - для начала. – mklement0

ответ

0

Непроверено Код

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

-n говорит, что если условно является ненулевым, а $() выполняет команду в своей собственной оболочке, чтобы подтолкнуть выход обратно к сценарию.

Bash Programming Help

+0

Эта команда может длиться около десятков секунд, а затем останавливается – Mohamed

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 ]] 
+0

Учитывая, что выход grep подавлен с '-q', мне действительно интересно, что ваше или иероглифное« решение »получает –

+0

Синтаксис Ошибка строк 16 и 18 – Mohamed

+0

@Mohamed Учитывая, что есть только 13 строк в коде внутри серой области. Я предполагаю, что вы скопировали то, что не должно использоваться в скрипте. –

Смежные вопросы