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

逐行读取文件计算各位和并判断奇偶的Shell脚本实现问题

Shell脚本实现方案

完整可运行代码

方案1:纯Bash实现

# 1. 生成带前导零的3位数字文件file01.txt
seq -w 1 999 > file01.txt

# 2. 逐行计算生成file02.txt
# 先清空目标文件避免历史内容干扰
> file02.txt
while IFS= read -r num; do
    # 分别取三位数字求和
    digit1=${num:0:1}
    digit2=${num:1:1}
    digit3=${num:2:1}
    sum=$((digit1 + digit2 + digit3))
    # 判断奇偶性
    [ $((sum % 2)) -eq 1 ] && type="odd" || type="even"
    # 写入结果
    echo "$num $type" >> file02.txt
done < file01.txt

方案2:awk简洁实现(性能更高)

如果不需要保留中间过程,可直接用awk一行完成所有逻辑:

seq -w 1 999 | awk '{sum = substr($0,1,1) + substr($0,2,1) + substr($0,3,1); print $0, sum%2 ? "odd" : "even"}' > file02.txt
# 需要单独保留file01.txt的话拆分执行即可:
# seq -w 1 999 > file01.txt
# awk '{sum = substr($0,1,1) + substr($0,2,1) + substr($0,3,1); print $0, sum%2 ? "odd" : "even"}' file01.txt > file02.txt

原脚本错误原因

你的写法存在三处核心问题:

  • 语法错误:IFS=read缺少空格,正确写法是IFS= read,否则系统会识别为非法命令
  • 逻辑错误:sum+=line是将整行字符串作为文本拼接进sum变量,没有拆分单数字计算,且没有逐行重置sum变量,最终得到的是整个文件所有行的拼接结果,不是逐行求和
  • 缺少奇偶判断逻辑:没有对求和结果做奇偶性判定,直接输出sum不符合输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:09:00