Eu resolvi isso uma vez, mas não me lembro como o fiz!
No meu processo filho, tenho isto:
echo -e "some control chars"
No meu processo pai, ele mostrará a string simples, sem nenhum estilo de terminal. Não há alguma maneira de interpretar os caracteres de controle provenientes de stdout / stderr de processos filhos no pai?
Para ser específico, eu tenho essa função bash originada no pai:
ql_cyan='3[1;36m'
ql_no_color='3[0m'
function ql_log_colors {
echo "sourcing quicklock.sh"
echo -e "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
echo "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
}
export -f ql_log_colors
se eu executar ql_log_colors
no shell atual, obtenho cores!
no entanto, se eu chamar ql_log_colors
de um subshell, nenhuma cor será exibida no pai, apenas a string simples "sourcing quicklock.sh".
Como você pode ver, eu tentei 3 variantes do comando echo, todas apenas saídas de texto simples no pai, se as instruções echo forem chamadas de um filho.