Como evitar espaço após a variável bash em string?

11

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.
    
por MatthewRock 22.04.2016 / 16:06

2 respostas

19

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.

    
por 22.04.2016 / 16:11
2

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.

Outras opções:

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"
    
por 23.04.2016 / 06:43