¿Por qué hacer eco con la opción -e se comporta de manera diferente en la línea de comando que en el script sh?

¿Por qué hacer eco con la opción -e se comporta de manera diferente en la línea de comando que en el script sh?

Usando LinuxMint 17.2, kernel 4.4.0-97-genérico. Hice un pequeño script TestEcho.sh que contiene:

#!/bin/bash
echo -e "\e[1;31m Text in Color \e[0m\n"
for code in {33..43}; do echo -e "\e[38;05;${code}m $code: Text in Color"; done ; echo "";

El echo -ecomando, cuando se ejecuta en la línea de comando, proporciona el resultado esperado. es decir, interpreta el código de escape y muestra el texto en color.

El mismo comando dentro de un script .sh echoparece ignorar la -eopción y se muestra -ecomo texto literal. Además, el bucle for también parece estar roto. ¿Esto es causado por echo -e? ¿Y lo que es más importante, cómo arreglar el guión?

RESPUESTA(gracias George Vasiliou): Ejecute el script con bashen lugar desh

$ bash ~/Download/TestEcho.sh

echo -e en cmdline vs dentro del script sh

Respuesta1

bash y sh son tipos diferentes de shell. bash es el último y más inteligente que sh. En su script, escribe #!/bin/basheso significa que se ejecutará usando bashShell. Pero si lo usa sh ~/Download/TestEcho.sh, se ejecutará usando shShell.

información relacionada