O comportamento de
echo '3'
Depende da implementação e / ou do ambiente.
Com implementações compatíveis com UNIX, ele exibe um caractere ESC seguido por NL, em alguns outros, ele gera 3
seguido por NL. Alguns suportam uma opção -e
para que as sequências de escape 3
sejam expandidas.
Seu script tem #! /bin/bash
she-bang, mas você está executando o script como sh the-script
, por isso sh
interpreta, não bash
.
Na maioria dos sistemas, bash
' echo
builtin não expande \x
sequências por padrão. Isso só acontece quando a opção xpg_echo
está habilitada ou usando a opção -e
(a menos que as opções xpg_echo
e posix
tenham sido habilitadas).
Provavelmente, sua implementação sh
local é compatível com UNIX a esse respeito (como dash
ou bash
compilado com a opção xpg_echo
ativada por padrão), mas a que está no servidor remoto não é (como bash
).
Se você deseja um comportamento portátil e confiável, use printf
:
printf '[[01;32m green [01;37m]\n'
printf '[[01;31m red [01;37m]\n'