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