bash脚本平均值为两个值

bash脚本平均值为两个值

问题描述:

我有一个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

下面一个例子与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