Usando LinuxMint 17.2, kernel 4.4.0-97-genérico. Criei um pequeno script TestEcho.sh que contém:
#!/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 "";
O echo -e
comando, quando executado na linha de comando, fornece a saída esperada. ou seja, ele interpreta o código de escape e exibe o texto em cores.
O mesmo comando em um script .sh echo
parece ignorar a -e
opção e é exibido -e
como texto literal. Além disso, o loop for também parece estar quebrado. Isso é causado por echo -e
? E o mais importante, como consertar o script?
RESPONDER(obrigado George Vasiliou): Execute o script com bash
em vez desh
$ bash ~/Download/TestEcho.sh
Responder1
bash e sh são tipos diferentes de shell. bash é o mais recente e mais inteligente que sh. No seu script, você escreve #!/bin/bash
que significa que ele será executado usando bash
shell. Mas se você usar sh ~/Download/TestEcho.sh
, ele será executado usando sh
o shell.