这个问题在这里已有答案:
我试图找出哪个搜索引擎将为我提供最快的ping,然后在单个输出中得到结果,但我无法弄清楚如何在shell脚本中放置if语句。我的代码如下
png=10000
for item in ${array[*]}
do
png_cal=`ping -c 4 "$item" | tail -1| awk '{print $4}' | cut -d '/' -f 2`
if [[ $png < $png_cal ]];then
png=${png_cal}
link=${item}
fi
done
并且我的程序在第一次循环后不再循环。
您当前的问题是如何比较Bash中的浮点数,而您的代码只会比较整数。
我让它像这样工作:
array=(www.google.com www.facebook.com www.linkedin.com www.stackoverflow.com)
fastest_response=2147483647 # largest possible integer
for site in ${array[*]}
do
this_response=`ping -c 4 "$site" | awk 'END { split($4,rt,"/") ; print rt[1] }'`
if (( $(bc -l <<< "$this_response < $fastest_response") )) ; then
fastest_response=$this_response
fastest_site=$site
fi
echo "Got $this_response for $site ; fastest so far $fastest_site"
done
echo $fastest_site
进一步说明:
最终获胜者是:
$ bash test.sh
Got 21.786 for www.google.com ; fastest so far www.google.com
Got 20.879 for www.facebook.com ; fastest so far www.facebook.com
Got 20.555 for www.linkedin.com ; fastest so far www.linkedin.com
Got 21.368 for www.stackoverflow.com ; fastest so far www.linkedin.com
www.linkedin.com