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'