Bash - 使用变量内部命令不起作用

时间:2013-05-13 16:50:44

标签: linux bash

我不确定为什么这不起作用。 (我研究过它并没有发现任何东西。)

我正在尝试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结果中获取值。

我已经多次过了,但我想我在这里错过了什么。

1 个答案:

答案 0 :(得分: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命令。

使用当前代码,它试图执行第一个命令的输出,这不是你想要的。