如何通过shell正确获取ping结果?

时间:2017-10-09 02:59:20

标签: 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%',所以有一些方法可以正确得到结果。谢谢〜

2 个答案:

答案 0 :(得分:0)

使用grep -o '[0-9]\+%'隔离该部分行。

答案 1 :(得分:0)

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

此处,\d代表一个数字,现在是+符号后至少生成一个或多个数字。这是通过使用-P标志来启用的,该标志启用perl的正则表达式。