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 -e
comando, 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 echo
parece ignorar la -e
opción y se muestra -e
como 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 bash
en lugar desh
$ bash ~/Download/TestEcho.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/bash
eso significa que se ejecutará usando bash
Shell. Pero si lo usa sh ~/Download/TestEcho.sh
, se ejecutará usando sh
Shell.