Diferencia entre 'echo' y 'echo -e' [cerrado]

25

¿Cuál es la diferencia entre echoy echo -e? ¿Qué comillas ("" o '') deben usarse con el comando echo? es decir: echo "Print statement"o echo 'Print statement'? Además, ¿cuáles son las opciones disponibles que se pueden usar junto con echo?

Venkatesh
fuente
3
¿Qué es el infierno? echo -ePOSIX no está definido y probablemente varía según el shell.
jordanm
¿Responde esto a tu pregunta? unix.stackexchange.com/questions/65803/…
dhag
2
use man echopara leer el manual para echo.
niñera
echo no ejecuta sus argumentos como comandos, solo ... los repite
Anthon

Respuestas:

33

echopor sí solo muestra una línea de texto. Tomará cualquier cosa dentro de las "..."dos comillas siguientes , literalmente, e imprimirá tal como está. Sin embargo, con lo echo -eque está haciendo echopara habilitar interpretar escapes de barra invertida. Con esto en mente, aquí hay algunos ejemplos

INPUT: echo "abc\n def \nghi" 
OUTPUT:abc\n def \nghi

INPUT: echo -e "abc\n def \nghi"
OUTPUT:abc
 def 
ghi

Nota: \nes una nueva línea, es decir, un retorno de carro. Si desea saber qué otras secuencias se reconocen, echo -eescriba en man echosu terminal.

3kstc
fuente
2
echoEstá incorporado en la mayoría de los depósitos. man echole gustará documentar el echocomando independiente en su lugar.
Stéphane Chazelas
Estás describiendo el comportamiento de GNU echoo el shell de GNU echocuando no está en modo de conformidad Unix. En otros lugares, el comportamiento será típicamente diferente.
Stéphane Chazelas
3

En la mayor parte de SHELL echono puedo tomar la secuencia de escape ( \n \t). Donde como echo -epuede

echo -e " This is \n an \t example"

La comilla simple y la comilla doble son principalmente para manejar los problemas de interpolación. Puede encontrar más detalles aquí, ¿Por qué echo ignora mis caracteres de cita?

Govind Kailas
fuente
Eso es al revés. En la mayoría de los shells (ksh88, ksh93, pdksh, mksh, Bourne, zsh, dash, bash y sh de todos los sistemas compatibles con Unix, algunos de ellos como ksh93 o bash solo en algunos entornos) echoexpanden las secuencias de escape. Una echoimplementación que acepta -eno es compatible con POSIX.
Stéphane Chazelas