web-dev-qa-db-ja.com

`wc -m`がさらに1文字をカウントするのはなぜですか?

wc -mhere-string(<<<)からさらに1文字(シンボル)をカウントする理由

以下に例を示します。

$ TEST_STR="askubuntu"
$ echo "$TEST_STR"
askubuntu
$ wc -m <<<"$TEST_STR"
10

10と言っていますが、実際には9つのシンボルしかありません。

wc -cについても同じ問題が発生します

4
c0rp

BashHerestringsが末尾の改行文字を追加するためです。

ここに証拠があります:

$ TEST_STR="askubuntu"
$ echo "$TEST_STR"
askubuntu
$ od -c <<<"$TEST_STR"
0000000   a   s   k   u   b   u   n   t   u  \n
0000012

また、改行文字があるべき理由を説明するいくつかの素敵な答えがあります:

  1. なぜ文字列は改行文字を追加するのですか?
  2. なぜ改行文字が必要なのか?
7
c0rp