変数の長さは次のとおりです。
`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
バイト数を計算します。問題の文字を人間が見ることができるかどうかにかかわらず、入力のバイト数だけを計算します。
printf
vsの特別な点については、echo
以下を参照してください。ここ知りたかったよりも詳細をご覧ください。