我怎样才能得到一个整数输出在BSD ping?

我想执行一个简单的检查从一个整数值输出。 在Linux中,这个工作非常好,但是FreeBSD的ping输出一个带有百分号后缀的float值。

LOSS=`/sbin/ping -c 10 -W 1000 -n $IP | grep loss | awk '{print $7}'` if [ ${LOSS} > ${LIMIT} ]; then # Do something here fi 

但是由于$ {LOSS}的值是一个string,在BSD下比较失败。

请帮助?

你可以改变awk分割空间和点,以拉出损失数字的整数部分。

 ping -c 10 1.2.3.4 | grep loss | awk '{FS = " |[\.]"} {print $7}' 

您需要查看BSD的ping命令。 man ping我假设你想要以下:

 #!/bin/sh count1=0 count2=0 Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-2)}') # BSD #Ping=$(ping -s 64 10.10.24.6 -c 10 | grep packet | awk '{print $(NF-4)}') # Linux if [ "$Ping" == "0%" ]; then count1=$((count1 + 1)) echo IP_addr" "UP" " else count2=$((count2 + 1)) echo IP_addr" "DOWN" " fi echo $count1 IP addresses UP and $count2 IP addresses DOW 

如果你没有得到所需的结果,找出你需要在ping命令中修改的参数。

希望能帮助到你!