我试图在shell中使用cURL来平均网站的加载时间。我可以使用以下代码将%{time_total}
保存到shell中的变量:
result=$(curl -o /dev/null -s -w "%{time_total}\n" "$url")
在此示例中,$result
的值为.013
,.035
和.024
。我想将它们加在一起,这样我就可以将它们平均化了。我尝试以各种方式使用awk来进行算术购买而我无法得到它。我尝试过这样的事情:
sum=`ps -ef | awk '/port 10 \-/ {print $result+$sum}'`
和
sum=$(awk 'BEGIN{s=$result+$sum} END {print s}' /dev/null)
和
sum=$(awk '{print $result+$sum}')
其中每一项都不会以某种方式发挥作用。这是我的完整脚本,它将从cURL输出每个加载时间。任何有助于获得总时间和平均值的帮助都将受到极大的赞赏。
#!/bin/sh
while getopts ":u:c:" opt; do
case $opt in
u) url="$OPTARG"
;;
c) count="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG" >&2
;;
esac
done
printf "Load Testing: %s\n" "$url"
echo "-------------------------------------------------------------------------"
declare -i sum=0
for ((i=0; i<count; i++)); do
result=$(curl -o /dev/null -s -w "%{time_total}\n" "$url")
echo "$result"
done
echo "$sum"
答案 0 :(得分:2)
由于您希望对本质上具有实际价值的值求和,因此您可以将bc -l
与简单的echo语句结合使用。
它主要用于执行浮点精度的算术运算。
只需在for循环中添加以下行
即可sum="$(echo "$result+$sum" | bc -l)"
这会将结果值添加到sum变量中。在此之后,您可以将总和除以得到所需的平均值。
答案 1 :(得分:-1)
想出来,必须用简单的sum
存储sum=0
的初始值而不是声明它,然后你必须保存和存储值:
sum=$(echo $s | awk "{print (($result+$sum))}")