echoと比較してprintfの特別な点は何ですか?

echoと比較してprintfの特別な点は何ですか?

変数の長さは次のとおりです。

`set num=123456`
`echo $num|wc -c`

7の出力を返します(6を返すと仮定)。

私も同じことをしました。printf

`printf "%s" $num|wc -c`

返される出力は6です(予想どおり)。

計算時にechoヌル文字が考慮されますか?Printfヌル文字で計算されますか?

何がそんなに特別ですかprintf

答え1

最も簡単な方法は、od -cすべての文字印刷のようなものを使用することです。

$ echo 123456 | od -c
0000000   1   2   3   4   5   6  \n
0000007
$ printf 123456 | od -c
0000000   1   2   3   4   5   6
0000006

ご覧のとおり、echo追加のコンテンツは印刷されますが\n印刷printfされません。wc -cバイト数を計算します。問題の文字を人間が見ることができるかどうかにかかわらず、入力のバイト数だけを計算します。

printfvsの特別な点については、echo以下を参照してください。ここ知りたかったよりも詳細をご覧ください。

関連情報