求助:编写可接收任意整数并输出两位小数精度均值的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
相关产品推荐
相关产品推荐

