由於某種原因,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
由於某種原因,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
未經測試的代碼
if [[ -n $(airbase-ng -c 6 -e "Steve's HotSpot" wlan0 | grep -q " Client") ]]
的-n
說,如果條件是非零而$()
在自己的殼執行該命令推輸出回到腳本。
這個命令可以運行大約幾十秒,然後停止 – Mohamed
你不(固定的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 ]]
考慮到grep的輸出受到'-q'的抑制,我真的不知道你的或者離線的「解決方案」增益 –
第16行和第18行的語法錯誤 – Mohamed
@Mohamed考慮到只有灰色區域內的代碼中有13行。我假定你複製了一些不應該用在腳本中的東西。 – 2015-10-27 03:32:31
「airbase-ng -c 6 -e」Steve's HotSpot「wlan0」的輸出是什麼樣的? –
03:14:42創建的分接口at0 03:14:42嘗試將MTU設置爲at0到1500 03:14:42啓動了BSSID爲1E:AB:15:29:8F:14的接入點。 – Mohamed
@Mohamed:如果這是輸出,那麼爲什麼你希望'grep -q「Client」'指示成功(並因此輸入'if'子句),假設輸出不包含''Client' ?一般來說,請將樣本/預期的輸入/輸出添加到_question_ - 而不是評論 - 最好_to開頭with_。 – mklement0