Basta colocar a variável entre chaves:
echo -e "${Red}Note: blabla${NC}".
Veja mais detalhes sobre a Expansão de Parâmetros .
Veja também a excelente resposta Por que o printf é melhor que o eco? se você se preocupa com a portabilidade.
Eu tenho uma variável para cor. Eu o uso para definir cores em strings, avaliando-as dentro da string. No entanto, preciso incluir espaço após o nome (para que o nome não contenha parte do texto). Isso às vezes parece ruim.
Como posso evitar o uso (impressão) deste espaço?
Exemplo (digamos que Red=1
e NC=2
):
echo -e "$Red Note: blabla$NC".
Saída:
1 Note: blabla2.
Resultado esperado:
1Note: blabla2.
Basta colocar a variável entre chaves:
echo -e "${Red}Note: blabla${NC}".
Veja mais detalhes sobre a Expansão de Parâmetros .
Veja também a excelente resposta Por que o printf é melhor que o eco? se você se preocupa com a portabilidade.
O que você deve adquirir o hábito de usar é printf:
printf '%sNote: blabla%s\n' "$Red" "$NC"
Onde cada %s
substitui uma variável. E o -e
não é necessário, pois o printf aceita valores de barra invertida \ n, \ t, etc de uma maneira portátil.
Lembre-se que echo -e
não é portável para outros shells.
Você pode usar dois comandos que concatenam sua saída:
echo -ne "$Red"; echo -e "Note: blabla$NC"
Você pode usar a concatenação de string simples:
echo -e "$Red""Note: blabla$NC"
Ou você pode usar { }
para evitar confusões com texto de nome:
echo -e "${Red}Note: blabla$NC"