为什么`wc -m` 多计算 1 个字符?

c0r*_*0rp 5 command-line bash wc

为什么wc -mhere-string(<<<) 中多计算一个字符(符号)

这是示例:

$ TEST_STR="askubuntu"
$ echo "$TEST_STR"
askubuntu
$ wc -m <<<"$TEST_STR"
10
Run Code Online (Sandbox Code Playgroud)

它说是 10,但实际上只有 9 个符号。

同样的问题出现在 wc -c

c0r*_*0rp 8

因为 Bash Here 字符串添加了尾随换行符。

这是证明:

$ TEST_STR="askubuntu"
$ echo "$TEST_STR"
askubuntu
$ od -c <<<"$TEST_STR"
0000000   a   s   k   u   b   u   n   t   u  \n
0000012
Run Code Online (Sandbox Code Playgroud)

此外,还有一些很好的答案可以解释为什么应该出现换行符:

  1. 为什么这里字符串添加换行符?
  2. 为什么应该有换行符?