echo
es un shell integrado en Bash y dash ( /bin/sh
). Si se ejecuta echo
desde la línea de comandos, está utilizando el Bash incorporado, si está ejecutando su script de shell con sh
el Dash incorporado.
La versión de guión de echo
no conoce la -e
opción, pero solo muestra algo literalmente sin ningún manejo especial para las \
secuencias.
Use Bash para ejecutar su script de shell o use en /bin/echo
lugar de echo
:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Para evitar los problemas con diferentes versiones de echo
usted, puede utilizar printf
en su lugar. En contraste, echo
printf
siempre interpreta las \
secuencias pero no agrega automáticamente un salto de línea al final, por lo que debe agregarlo \n
al final si lo desea.
Como algunas versiones de printf
No entiendo \e
, deberías usar \033
en su lugar:
printf "\033[1;31mThis is red text\033[0m\n"
/bin/echo
con guión (/bin/sh
) y bash;echo
con bash o./tes.sh
ambos funcionan correctamente. El siguiente códigobash
solo funciona. si [$ UID -ne 0]; luego echo "Usuario no root" más echo "Usuario raíz" fi