You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改curl脚本:转换time_total为毫秒、size_download为KB并输出平均响应毫秒值

修改后的脚本
# 创建临时文件存储原始响应时间,避免管道字段解析混乱
temp_time=$(mktemp)

for ((i=1;i<=50;i++)); do 
  # 用结构化格式捕获curl的元数据,方便后续解析
  curl_meta=$(curl -w 'http_code:%{http_code};size:%{size_download};time:%{time_total}' \
    "https://www.google.com" -m 2 -o /dev/null -s)
  
  # 解析各个字段
  http_code=$(echo "$curl_meta" | awk -F';' '{split($1, arr, ":"); print arr[2]}')
  raw_size=$(echo "$curl_meta" | awk -F';' '{split($2, arr, ":"); print arr[2]}')
  raw_time=$(echo "$curl_meta" | awk -F';' '{split($3, arr, ":"); print arr[2]}')
  
  # 单位转换:字节转KB(保留2位小数),秒转毫秒(保留2位小数)
  size_kb=$(echo "scale=2; $raw_size / 1024" | bc)
  time_ms=$(echo "scale=2; $raw_time * 1000" | bc)
  
  # 输出格式化后的结果到终端
  echo "Return Code: $http_code; Bytes Received: $size_kb KB; Response Time: $time_ms ms"
  
  # 将原始响应时间写入临时文件,用于计算平均
  echo "$raw_time" >> "$temp_time"
done

# 计算并输出平均响应时间(转换为毫秒,保留2位小数)
average_time=$(awk '{sum += $1; count++} END {print sum / count}' "$temp_time")
average_ms=$(echo "scale=2; $average_time * 1000" | bc)
echo "Average Response Time = $average_ms ms"

# 清理临时文件
rm "$temp_time"
关键修改说明
  • 结构化元数据捕获:把curl的-w输出改成http_code:%{http_code};size:%{size_download};time:%{time_total},避免空格分隔导致的字段索引混乱,后续用awk按分号拆分解析更可靠。
  • 单位转换:
    • 用bc工具做浮点运算,scale=2确保结果保留2位小数,size_download除以1024转成KB,time_total乘以1000转成毫秒。
  • 平均计算:用临时文件存储每次的原始响应时间(秒),最后求和取平均后再转成毫秒,避免多次转换带来的精度损失。
  • 临时文件清理:脚本结束后自动删除临时文件,避免残留垃圾文件。

内容的提问来源于stack exchange,提问作者Waddah Shamroukh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:50:13