wc <<<"$string"がprintf "$string"トイレより1バイト長く表示されるのはなぜですか?

wc <<<

wc偶然bashから入力を取得する方法によって数が異なることがわかりました。

$ s='hello'
$ wc -m <<<"$s"
6
$ wc -c <<<"$s"
6
$ printf '%s' "$s" | wc -m
5
$ printf '%s' "$s" | wc -c
5

これは - IMHOの混乱 - 行動はどこかに文書化されていますか?ここでの取引は何ですかwc?これは仮定された改行ですか?

ベストアンサー1

違いは、ここで文字列に追加された改行が原因です。バラよりバッシュマニュアル:

結果は、標準入力(またはファイル記述子)のコマンドに改行文字が追加された単一の文字列として提供されます。NもしN指定)。

wc計算方法は同じですが、入力が異なります。

おすすめ記事