Eu acho que seu problema está relacionado ao fato de que "ler" requer um fim de linha para ler a entrada. Assim, ele irá travar até que algum tipo de entrada seja inserido (ou seja, para sempre).
Talvez você deva adicionar a opção '-n' ao cecho, ou seja,
$ echo "message | cecho -n $blue
reescreva sua função para verificar o ' -n
' e, em seguida, aplique-o ao echo
dentro de cecho
.