2013-12-10 64 views
0

我有一個bash腳本運行iperf並輸出平均帶寬,即3.80 Mbits/sec。我想要做的是獲得這個輸出作爲連接速度的平均值。bash腳本平均值爲兩個值

所以,如果我有一個10兆的連接我想知道3.80兆位/秒是的,這麼輸出像

3.80 Mbits/sec 38% 

我不知道如何做到這一點的。

我的腳本執行

iperf -c 1.1.1.1 >> /tmp/iperf.log 
echo -e " \t $(awk '/Bandwidth/ {getline}; END{print $7, $8}' $iperflog" 

返回

3.80 Mbits/sec 

我想它返回

3.80 Mbits/sec 38% 
+1

的問題是,'bash'不支持浮點運算,所以你需要一個語言或工具,做。最簡單的可能是awk,但還有很多其他的。 – cdarke

回答

3

下面一個例子與awk

[email protected]:~# echo "3.80 Mbits/sec" | awk '{printf "%s %s%%\n", $0, $1/(10.0/100)}' 
3.80 Mbits/sec 38% 

適用於你的腳本只是你的命令後添加awk部分:

echo -e " \t $(awk '/Bandwidth/ {getline}; END{print $7, $8}' /tmp/iperf.log" | awk '{printf "%s %s%%\n", $0, $1/(10.0/100)}' 
+0

我得到以下錯誤:awk:運行時錯誤:沒有足夠的參數傳遞給printf(「%s%s% 」) FILENAME =「 - 」FNR = 1 NR = 1' – Lurch

+0

當您複製並粘貼命令完全按照上面的命令行? – chaos

+0

是複製並粘貼 – Lurch