“wc -m”显示一个字符太多

“wc -m”显示一个字符太多

wc -m我正在编写一个使用/wc -c来计算字符串中字母数量的程序。它会计算字母数,但会额外添加一个字母。这就是我目前所拥有的:

echo "enter a word"
read var1
echo $var1 | wc -c

当我输入这个词时,它会成功执行某些操作,但是,例如,如果我输入“test”,它将输出 5。

为什么要这样做?有解决办法吗?

答案1

这与您用来将字符串通过管道传输到 的命令有关wc。该echo命令在字符串末尾插入一个额外的字符,即test一个新的换行符,\n

所以实际上你正在计算这个:test\n。您可以通过-n切换到 来禁用此行为echo

$ echo -n "test" | wc -c
4

或者使用不同的命令来生成字符串,例如printf

$ printf "%s" "test" | wc -c
4

看看发生了什么

您可以使用它od来查看传递到管道的实际字符,如下所示:

$ echo "test" | od -c
0000000   t   e   s   t  \n
0000005

$ echo -n "test" | od -c
0000000   t   e   s   t
0000004

相关内容