Comment éviter l'espace après la variable bash dans la chaîne?

17

J'ai une variable pour la couleur. Je l'utilise pour définir la couleur des chaînes, en l'évaluant à l'intérieur de la chaîne. Cependant, je dois inclure un espace après le nom (pour que le nom ne contienne pas de partie du texte). Cela a parfois l'air mauvais.

Comment éviter d'utiliser (imprimer) cet espace?

Exemple (disons cela Red=1et NC=2):

echo -e "$Red Note: blabla$NC".

Production:

1 Note: blabla2.

Production attendue:

1Note: blabla2.
MatthewRock
la source

Réponses:

4

Ce que vous devriez prendre l'habitude d'utiliser est printf:

printf '%sNote: blabla%s\n' "$Red" "$NC"

Où chacun %sremplace une variable. Et le -en'est pas nécessaire car printf accepte les valeurs de barre oblique inverse \ n, \ t, etc. de manière portable.

N'oubliez pas que ce echo -en'est pas portable pour d'autres coquilles.

Autres options:

Vous pouvez utiliser deux commandes qui concaténent leur sortie:

echo -ne "$Red"; echo -e "Note: blabla$NC"

Vous pouvez utiliser une concaténation de chaîne simple:

echo -e "$Red""Note: blabla$NC"

Ou vous pouvez utiliser { }pour éviter les confusions nom-texte:

echo -e "${Red}Note: blabla$NC"

la source