誤って、wc
はbashから入力を取得する方法に応じて、カウントが異なることがわかりました。
$ s='hello'
$ wc -m <<<"$s"
6
$ wc -c <<<"$s"
6
$ printf '%s' "$s" | wc -m
5
$ printf '%s' "$s" | wc -c
5
これは-私見の混乱-どこかに文書化された行動ですか?ここでwc
は何を数えますか-これは想定される改行ですか?
違いは、ヒア文字列に追加された改行が原因です。 Bashマニュアル を参照してください:
結果は、標準入力(またはファイル記述子nifnが指定されている)。
wc
も同じようにカウントされますが、その入力は異なります。
これは、ヒア文字列リダイレクタによって追加された後続の改行です。
$ s="hello"
$ hexdump -C <<<"$s"
00000000 68 65 6c 6c 6f 0a |hello.|
00000006
$ printf "$s" | hexdump -C
00000000 68 65 6c 6c 6f |hello|
00000005