Почему `wc -m` считается на 1 символ больше?

Зачем wc -m считает один символ (символ) больше here-string (<<<)

Вот пример:

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

Это говорит о 10, но на самом деле есть только 9 символов.

Та же проблема появляется для wc -c

1 ответ

Решение

Потому что строки 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

Кроме того, есть несколько хороших ответов, которые объясняют, почему символ новой строки должен быть там:

  1. Почему здесь строка добавляет символ новой строки?
  2. Почему символ новой строки должен быть там?
Другие вопросы по тегам