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

求助:编写可接收任意整数并输出两位小数精度均值的Bash脚本

解决Bash脚本计算整数均值并保留两位小数的问题

你的原代码存在几个关键错误,导致无法正常运行:

  • numberCount=$((n | wc -c)) 是完全错误的写法,如果你想把输入的n作为整数个数,直接用n即可,这个管道操作既语法错误又逻辑不通。
  • for循环的写法不符合Bash规则,Bash的C风格循环必须用for ((初始化; 判断条件; 增量))的格式,你写的for sum=$((n>=0; n<=0; n++))根本无法执行,而且完全没实现“逐个输入整数并累加”的核心逻辑。
  • 代码里没有读取整数并累加到sum的步骤,最后直接计算sum/numberCount时,sum始终是初始值0,结果自然不对。

修正后的基础版本

这个版本需要先输入要计算的整数个数,再逐个输入整数:

#!/bin/bash

sum=0
read -p "请输入要计算均值的整数个数: " count

# 循环读取每个整数并累加
for ((i=0; i<count; i++)); do
    read -p "第$((i+1))个整数: " num
    sum=$((sum + num))
done

# 用bc计算并保留两位小数
echo "scale=2; $sum / $count" | bc

更灵活的版本(无需提前输入个数)

如果不想先输入个数,直接让用户输入任意多个整数,输完按Ctrl+D结束,还能过滤非整数输入:

#!/bin/bash

sum=0
count=0

echo "请输入任意多个整数(输完按Ctrl+D结束):"
while read num; do
    # 简单校验是否为整数
    if [[ $num =~ ^-?[0-9]+$ ]]; then
        sum=$((sum + num))
        count=$((count + 1))
    else
        echo "⚠️ '$num' 不是整数,已跳过"
    fi
done

if [ $count -eq 0 ]; then
    echo "没有输入有效整数"
    exit 1
fi

echo "scale=2; $sum / $count" | bc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:33