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

如何用Bash脚本逐行计算文件每行奇数之和并排查代码错误

Bash脚本逐行统计奇数和的问题修正

你编写的脚本存在以下几处语法和逻辑错误:

  • 变量赋值语法错误:Bash中变量赋值等号两侧不能有空格,sum = 0 需要改为 sum=0
  • 缺少行内字段遍历逻辑:读取到整行内容后,没有拆分遍历该行的每一个数字,直接使用$_不符合预期,$_实际存储的是上一条命令的最后一个参数,不是当前行的数值元素
  • 条件判断语法错误:Bash的if判断没有($条件){代码块}的写法,算术比较建议用(( ))包裹,同时不存在-nq比较符,判断奇数应该用数值取模不等于0,比较符为-ne或者!=
  • 算术运算写法错误:Bash中算术运算需要用$(( ))包裹,直接写sum = sum + $_无法完成数值累加,应该写为sum=$((sum + 当前数字))
  • 缺少文件名边界处理:读取文件时$filename没有加双引号,遇到带空格的文件名会报错

修正后的完整可运行代码如下:

#!/bin/bash
read -p "Enter file name:" filename

while read -r line
do
    sum=0
    # 遍历当前行的每一个数字
    for num in $line
    do
        # 判断是否为奇数
        if (( num % 2 != 0 ))
        then
            sum=$((sum + num))
        fi
    done
    echo $sum
done < "$filename"

输入示例中的input.txt测试,输出结果与预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:54:03