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

为何echo统计变量字符数与${#var}结果不同?Bash脚本疑问

Bash变量字符数计算结果差异解答

问题场景

我正在学习Bash脚本编写,想要获取一个变量的字符数。尝试了两种方法后,结果相差1个字符,具体代码与输出如下:

chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
echo ${#chars} 
echo $(echo "$chars" | wc -c)

输出结果:

26
27

差异原因

  • ${#chars} 是Bash内置的变量长度计算语法,它直接统计变量chars里的字符总数,这里26个字母就返回26,不会额外统计换行符。
  • echo "$chars" | wc -c 这条命令里,echo 默认会在输出的字符串末尾自动追加一个换行符(\n),而wc -c 统计的是输入中的所有字节数——包括这个额外的换行符,所以结果会比实际字符数多1。

如果想用wc -c得到和内置语法一致的结果,给echo加上-n参数即可,这个参数会禁止echo添加末尾的换行符:

echo $(echo -n "$chars" | wc -c)

此时输出结果就是26。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:20:46