gpt4 book ai didi

linux - 一 ping 两个结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:57 25 4
gpt4 key购买 nike

我确信这个问题有一个简单的答案,但由于 BASH 不太流利,我只是在原地打转。我想做这个

ping -c1 8.8.8.8 1>/dev/null 2>/dev/null
SUCCESS=$?
if [ $SUCCESS -eq 0 ] etc....

然后还将 ping 结果分配给一个变量,以便我可以获得时间延迟

ping -c1 8.8.8.8 1>/dev/null 2>/dev/null | DELAY=awk '{print $11}'
SUCCESS=$?
if [ $SUCCESS -eq 0 ] etc....
echo $DELAY

谢谢

最佳答案

您的代码存在多个问题。其中一个问题已经通过 Tink 解决了。如果你这样做

ping -c1 8.8.8.8 1>/dev/null 2>/dev/null | cat

您首先将 ping 的所有标准输出放入/dev/null 中,然后希望在管道中获得一些标准输出。那是行不通的。

二、语法

ping -c1 8.8.8.8 1>/dev/null 2>/dev/null | DELAY=awk '{print $11}'

不正确。您可能会收到一条消息

-bash: {print $11}: command not found

即:使用DELAY=awk语法将变量DELAY设置为'awk'以执行'{print $1}'命令。这不是您想要做的。

另请注意,$? 是最后一个命令的退出代码。那么,如果前一行有效,$?将是 awk 的结果,而不再是 ping 的结果。

最后,当我执行 ping 操作时,awk '{print $11}' 只会给我一堆空行。

那么,该怎么办呢?例如:

tempfile=/tmp/tempfile.$$
host=8.8.8.8
ping -c1 $host > $tempfile
success=$?
if [ $success -eq 0 ] ; then
sed -n 's/.*time=//p' $tempfile
else
echo "AAaarrghh... My Ping FAILED"
fi
rm $tempfile

或者类似的东西

关于linux - 一 ping 两个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51799233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com