Saltar al contenido

Diferencia entre printf y echo en bash

Solución:

Ambos echo y printf son comandos integrados (printf está integrado en Bash desde v2.0.2, 1998). echo siempre sale con un estado 0 y simplemente imprime argumentos seguidos de un carácter de final de línea en la salida estándar, mientras que printf permite la definición de una cadena de formato y proporciona un código de estado de salida distinto de cero en caso de falla.

printf tiene más control sobre el formato de salida. Se puede usar para especificar el ancho de campo que se usará para el elemento, así como varias opciones de formato para los números (como qué base de salida usar, si se imprime un exponente, si se imprime un signo y cuántos dígitos imprimir después. el punto decimal). Esto se hace proporcionando la cadena de formato, que controla cómo y dónde imprimir los otros argumentos y tiene la misma sintaxis que el lenguaje C (%03d, %e, %+d, …). Esto significa que debe escapar del símbolo de porcentaje cuando no se habla de formato (%%).

Probablemente, si agrega el carácter de nueva línea que echo utiliza de forma predeterminada (excepto cuando se utiliza -n opción) obtendrá el mismo efecto.

printf "blahn" >/dev/udp/localhost/8125

En cuanto al rendimiento, siempre tuve en cuenta que echo fue más rápido que printf porque el último tiene que leer la cadena y formatearla. Pero probándolos con time (también incorporado) los resultados dicen lo contrario:

$ time for i in {1..999999}; do echo "$i" >/dev/null; done
real    0m10.191s
user    0m4.940s
sys 0m1.710s

$ time for i in {1..999999}; do printf "$i" >/dev/null; done
real    0m9.073s
user    0m4.690s
sys 0m1.310s

Narración printf para agregar caracteres de nueva línea, al igual que echo hace por defecto:

$ time for i in {1..999999}; do printf "$in" >/dev/null; done
real    0m8.940s
user    0m4.230s
sys 0m1.460s

que obviamente es más lento que sin imprimir el n, pero aún más rápido que echo.

La diferencia es que echo envía una nueva línea al final de su salida. No hay forma de “enviar” un EOF.

Esta es probablemente la mejor descripción de echo vs printf

http://www.in-ulm.de/~mascheck/various/echo+printf/

En un nivel muy alto .. printf es como echo pero se puede hacer más formateo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *