#!/bin/bash set -e # 获取文件的增长速度 # 参数: # $1: 文件路径 # $2: 时间间隔 (秒) # 输出: # 文件的增长速度 (B/s, MB/s, GB/s) function usage() { if [ $# -ne 1 ]; then echo "Usage: $0 " echo " $0 " exit 1 fi file="$1" n="${2:-5}" # 检测平台并设置获取文件大小的命令 if stat --version >/dev/null 2>&1; then # GNU stat (Linux) get_size() { stat -c%s "$1" } else # BSD stat (macOS) get_size() { stat -f%z "$1" } fi size1=$(get_size "$file") echo "before $1 size: $size1" echo "wait $n seconds..." sleep "$n" size2=$(get_size "$file") echo "after $1 size: $size2" growth=$(echo "scale=2; ($size2 - $size1) / $n" | bc) if (( $(echo "$growth >= 1073741824" | bc) )); then echo "$(echo "scale=2; $growth / 1073741824" | bc) GB/s" elif (( $(echo "$growth >= 1048576" | bc) )); then echo "$(echo "scale=2; $growth / 1048576" | bc) MB/s" else echo "$growth B/s" fi } usage "$@"