¿Cuál es la diferencia entre usar
echo -e "Hello\nWorld"
y
echo $"Hello\nWorld"
¿No salen ambos?
Hello
World
command-line
bash
marca
fuente
fuente

Hello\nWorld. Necesita el-einterruptor para interpretar los caracteres de escape.echo $'Hello\nWorld', que se imprimirán en dos líneas debajo de bash.Respuestas:
echo -eyecho $'...'son similares en el sentido de que admiten las siguientes secuencias de escape:Ellos tienen diferencias. Además de lo anterior,
echo -eadmite:Por el contrario,
$'....'admite:Observe que, entre los dos, las
\cextensiones son incompatibles:Para lo
echo -eanterior,\csuprime la salida adicional, ignorando asíIstop. Por el contrario, para$'...', el\cIse interpreta como una pestaña.La forma visualmente similar:
$"..."Por el contrario
$'...', la función de$"..."es bastante diferente. Hará que la cadena que contiene se traduzca de acuerdo con la configuración regional actual.La
echo -econtroversiaecho -eno es universalmente compatible con shells y muchos consideran la-eopción como un error de diseño. Observar:Como puede ver, si lo que está imprimiendo
echocomienza con un guión, los resultados pueden ser inesperados. A menos que esté seguro de que la primera cadena con la que imprimiráechono comienza con un guión, probablemente sea mejor usarlaprintf.Por estas razones, el estándar POSIX concluye :
Chet Ramey, quien ha mantenido
bashdurante los últimos 22 años, está de acuerdo :fuente
printflugar deecho*) en realidad no es específicoecho. Ocurre con cualquier comando que reconozca opciones cortas o largas (escritas en la forma tradicional) y tome operandos de nombre de archivo, incluidosls. Podría decirse que la situación es un poco peorechoya que (como menciona su fuente)echogeneralmente no acepta--indicar el final de las opciones, mientras que uno puede escribir comandos comols -- *l. (Y realmente uno debería escribir comandos de esa manera, cuando usa globos que comienzan con*o-, especialmente en los guiones).\nsecuencia de escape, lo que en realidad no importa si usoecho -e '...',echo $'...'oecho $"..."