0

我不确定为什么这不起作用。(我研究了一下,一无所获。)

我正在尝试 ping 一个 IP 并获得结果。然后从结果中得到平均时间和丢包率

PING=$(ping -c $AMOUNT -s $SIZE $IP)
AVG_TIME=$($PING | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
PACKET_LOSS=$($PING | grep -oP '\d+(?=% packet loss)')

错误:

PING:找不到命令

如果我将 PING 命令放在其他每个命令中,它就可以工作,但这意味着它会为每个命令 ping 一次,而不是从一个 ping 结果中获取值。

我已经经历过很多次了,但我想我在这里错过了一些东西。

4

1 回答 1

3

您想从 ping 命令获取输出。所以改成:

AVG_TIME=$(echo "$PING" | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
PACKET_LOSS=$(echo "$PING" | grep -oP '\d+(?=% packet loss)')

注意echo上面的命令。

使用当前代码,它正在尝试执行您不想要的第一个命令的输出。

于 2013-05-13T16:54:03.193 回答