Wie vermeide ich Leerzeichen nach der Bash-Variable in einem String?

17

Ich habe eine Variable für die Farbe. Ich benutze es, um Farbe für Zeichenfolgen festzulegen, indem ich sie innerhalb der Zeichenfolge auswerte. Nach dem Namen muss jedoch ein Leerzeichen eingefügt werden (damit der Name keinen Teil des Texts enthält). Das sieht manchmal schlecht aus.

Wie kann ich vermeiden, diesen Bereich zu verwenden (zu drucken)?

Beispiel (Sagen wir das Red=1und NC=2):

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

Ausgabe:

1 Note: blabla2.

Erwartete Ausgabe:

1Note: blabla2.
MatthewRock
quelle

Antworten:

4

Was Sie sich angewöhnen sollten, ist printf:

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

Wobei jeder %seine Variable ersetzt. Und das -ewird nicht benötigt, da printf Backslash-Werte \ n, \ t usw. portabel akzeptiert.

Denken Sie daran, dass dies echo -enicht auf andere Shells übertragbar ist.

Andere Optionen:

Sie können zwei Befehle verwenden, die ihre Ausgabe verketten:

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

Sie können eine einfache Zeichenfolgenverkettung verwenden:

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

Oder nutzen Sie { }, um Namensverwechslungen zu vermeiden:

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

quelle