web-dev-qa-db-fra.com

Pourquoi `wc -m` compte 1 caractère de plus?

Pourquoi wc -m compte un caractère (symbole) de plus dans here-string (<<<)

Voici un exemple:

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

Il dit 10, mais en réalité il n'y a que 9 symboles.

Le même problème apparaît pour wc -c

4
c0rp

Parce que Bash Ici, les chaînes ajoutent un caractère de fin de ligne.

Voici la preuve:

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

En outre, il existe quelques bonnes réponses qui expliquent pourquoi le caractère de nouvelle ligne devrait être présent:

  1. Pourquoi ici la chaîne ajoute-t-elle un caractère de nouvelle ligne?
  2. Pourquoi le caractère de nouvelle ligne devrait-il être là?
7
c0rp