Para mostrar mensajes e imprimir datos hay dos comandos disponibles printfy echo.
Entonces, ¿qué tan diferente usaron? ¿Cuál es más preferible?
command-line
Pandya
fuente
fuente

Respuestas:
Preferible y más ampliamente utilizado no es lo mismo. Si bien
printfes mejor por muchas razones, la mayoría de las personas todavía lo usanechoporque la sintaxis es más simple.Las principales razones por las que debería preferir
printfson:echono está estandarizado, se comportará de manera diferente en diferentes sistemas.Es difícil predecir lo que realmente estás ejecutando cuando lo haces
echo foo. Para ilustrar, en mi sistema Debian:Como puede ver, hay dos
echocomandos diferentes , uno es un shell (bash en este caso) integrado y otro es un binario separado. Tenga en cuenta quebashtambién tiene una funciónprintfincorporada, pero su comportamiento está más estandarizado, por lo que es un problema menor (gracias a @ RaduRădeanu por señalarlo).Dado que algunas (pero no todas) las implementaciones de los
echoconmutadores de línea de comando de soporte, es difícil imprimir una cadena que comienza con a-. Si bien muchos programas admiten--significar el final de los cambios y el comienzo de los argumentos (por ejemplo,grep -- -a fileencontrará líneasfileque contienen-a),echono lo hace. Entonces, ¿cómo tienesechoimpresión-n?printfpuede hacer esto fácilmente:Para obtener más información de la que siempre quiso saber por qué
printfes mejorecho, consulte esta respuesta a una pregunta similar en http://unix.stackexchange.com :/unix//a/65819/22222
fuente
printfcomo mejor intérprete.printf(vertype -a).printfestá más rígidamente definido en POSIX y creo que el incorporado sigue el mismo estándar. Las especificaciones POSIX para,echopor otro lado, son menos estrictas e incluso afirman explícitamente que habrá diferencias entre las implementaciones y esoprintfdebería preferirse.echo. ¿Es eso correcto?echolugar deprintfes que la forma puede ser más simple. Si sabe lo que está imprimiendo,echo fooes más rápido y fácil de escribir queprintf 'foo\n'. Aparte de eso, cuando se escriben scripts donde se necesita imprimir una variable, nunca hay una buena razón para usarlaecho.Preguntar cuál es preferible es en sí mismo incompleto.
Si todo lo que se desea hacer es emitir una o más líneas de texto terminadas por nuevas líneas , entonces el eco es suficiente. Si se pretende algo más inteligente, incluyendo específicamente una "línea parcial" que no tiene la nueva línea, entonces printf es lo mejor para ese propósito .
fuente
echoimplementación, "evitar la nueva línea" se hace fácilmente conecho -n. De hecho,-nes la más portátil de las características de echo. Según POSIX, está ausente de SystemV pero presente en la mayoría de los Unices.-nde los BSD y SystemV pero todo lo demás, no tengo ni idea.