echo
é um shell embutido no Bash e dash ( /bin/sh
). Se você executa a echo
partir da linha de comando, está usando o Bash built-in, se está executando seu shell script com sh
o Dash embutido.
A versão de traço de echo
não conhece a -e
opção, mas apenas produz qualquer coisa literalmente sem nenhum tratamento especial para \
sequências.
Use o Bash para executar seu script de shell ou use em /bin/echo
vez de echo
:
/bin/echo -e "\e[1;31mThis is red text\e[0m"
Para evitar os problemas com diferentes versões, echo
você pode querer usar printf
. Ao contrário de echo
printf
sempre interpreta \
seqüências, mas não adiciona automaticamente um avanço de linha no final, portanto você deve anexá \n
-lo ao final, se desejar.
Como algumas versões printf
do não entendem, \e
você deve usar \033
:
printf "\033[1;31mThis is red text\033[0m\n"
/bin/echo
com dash (/bin/sh
) e bash;echo
com bash ou./tes.sh
ambos funcionam corretamente. O código abaixo funcionabash
apenas com . se [$ UID -ne 0]; then echo "Não usuário root" else echo "Usuário Root" fi