O que é especial sobre printf over echo

0

Eu estava encontrando o comprimento de uma variável como abaixo:

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

retornou a saída como 7 (suponha retornar 6)

Eu fiz o mesmo com printf

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

retornou a saída como 6 (como esperado)

O echo considera o caractere nulo ao contar? é Printf contando até o caractere nulo?

o que é tão especial sobre printf ?

    
por Aravind 31.05.2016 / 11:02

1 resposta

4

A maneira mais fácil de ver isso é usar algo como od -c , que imprime todos os caracteres:

$ 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

Como você pode ver, echo imprime um \n extra, mas printf não. wc -c conta bytes, não importa se o caracter em questão pode ser visto por humanos ou não, ele apenas conta o número de bytes em sua entrada.

Quanto ao que há de tão especial sobre printf vs echo , consulte aqui para obter mais detalhes do que você sempre quis saber.

    
por 31.05.2016 / 11:12