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

为什么wc -l统计行数不准?统计bash脚本时会少算一行

wc -l计数偏差的原因

wc -l的统计逻辑是计算文件内换行符(\n)的总数量,而非直接统计肉眼可见的行数,这是出现计数偏差的核心原因。

具体到你给出的脚本示例的问题

你贴出的script.sh肉眼可见是3行内容:

#!/bin/bash

echo $(wc -l $0)

统计结果返回2,说明该文件一共只有2个换行符:

  • 第一行#!/bin/bash末尾有1个换行符
  • 第二行空行末尾有1个换行符
  • 第三行echo $(wc -l $0)末尾没有换行符,所以不会被wc -l计数

普通txt文件统计结果符合预期,是因为绝大多数文本编辑器在保存纯文本文件时,会自动在文件末尾补全换行符,换行符的数量刚好等于肉眼可见的行数。

验证方法

你可以执行cat -A script.sh查看文件的不可见字符:

  • 每一行末尾的$符号代表存在换行符
  • 如果最后一行末尾没有$,就说明确实缺少末尾换行符

给脚本的最后一行末尾添加换行后重新保存,再运行脚本就能得到3的正确计数结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:27:06