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

Linux中统计字符数时wc -c与${#}的区别是什么?

问题原因解答

差异根源

wc -c统计结果多1的核心原因是 echo 命令的默认输出规则:echo会在你传入的内容末尾自动追加1个换行符(\n,占1个字符长度),两个统计逻辑的本质区别如下:

  • ${#SHELL} 是Shell内置的参数扩展语法,统计的是SHELL变量本身存储的原始字符串长度:/bin/bash 刚好包含9个字符,没有额外控制字符,所以结果为9。
  • echo $SHELL | wc -c 的执行链里,echo 先输出 $SHELL的内容+末尾换行符,总长度为10,再通过管道传给wc -c;wc -c会统计输入流的所有字符总数,包含这个追加的换行符,所以结果为10。

验证方法

你可以用echo的-n参数取消末尾换行追加,验证统计结果一致:

echo -n $SHELL | wc -c
# 输出结果为9,和${#SHELL}统计结果完全匹配

核心差异总结

  • ${#变量名}:仅统计变量存储的原始纯内容的字符长度,不包含任何执行过程中额外追加的控制字符。
  • wc -c:统计输入流中所有字符的总数量,包括换行符、制表符等各类控制字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:39:02