$ printf 'apple' | wc -m 5 $ echo 'apple' | wc -m 6¿Por qué printf imprime 5 y echo imprime 6 caracteres?
Primera oración de entrada para echo en la página de manual de bash (énfasis mío):
Muestra los argumentos, separados por espacios, seguidos de una nueva línea .
Primera oración de la entrada de la página man para printf :
Escriba los argumentos formateados en la salida estándar bajo el control del formato.
printf solo imprime lo que aparece en el formato; no agrega una nueva línea implícita.
Puede haber otra diferencia entre echo "foo" y printf "foo" , dependiendo de qué sea exactamente foo . La especificación POSIX brinda a las implementaciones una amplia discreción en la forma en que implementa echo , probablemente para evitar elegir entre las diversas implementaciones históricas como estándar. Utilice printf cuando confíe en la salida precisa.
aqui esta la diferencia..
$printf 'abcd' abcd$ echo 'abcd' abcd $ Como puede ver, el carácter adicional es nueva línea \n
El comando Echo agrega los caracteres "\n" al final de la cadena. Es decir, cuando imprimimos algo con el comando echo, automáticamente pasa a la nueva línea. Pero printf no hace esto.
echo "cadena" igual a "cadena\n" e imprime "cadena" igual a "cadena" .
por lo que la salida del comando "wc -m" es diferente.