printf 相对于 echo 有什么特别之处

printf 相对于 echo 有什么特别之处

我发现变量的长度如下:

`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,请参见这里了解比您想知道的更多详细信息。

相关内容