我发现变量的长度如下:
`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
,请参见这里了解比您想知道的更多详细信息。