2017-10-09 14 views
0

我在寫shell腳本,我想平的結果,所以我寫這樣的代碼:如何通過shell正確得到ping結果?

ping_res=`ping -c 5 $ADMIN_GW -I $SRIOV_BOND | grep loss | awk '{print $6}' | awk -F "%" '{print $1}'` 

大多數PC得到了這樣的結果:「100」,一些PC得到了這樣的結果:「+5 」。於是我運行類似下面的命令檢查原因:

ping_res=`ping -c 5 $ADMIN_GW -I $SRIOV_BOND | grep loss` 

,我得到了不同的結果,一個是:

5 packets transmitted, 0 received, 100% packet loss, time 4001ms 

之一是:

5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4001ms 

我不知道爲什麼,我想獲得'100%',所以有什麼方法可以正確地獲得結果。謝謝〜

回答

0

使用grep -o '[0-9]\+%'來隔離那部分行。

0
<ping-commnad>| grep -Po '\d+%' 
100% 

這裏,\d代表單個數字,現在+符號它使至少一個或多個數字後。這是通過使用-P標誌使能perl的正則表達式啓用的。