Jak uniknąć spacji po zmiennej bash w ciągu?

17

Mam zmienną koloru. Używam go do ustawiania koloru łańcuchów, oceniając je wewnątrz łańcucha. Jednak muszę podać spację po nazwie (aby nazwa nie zawierała części tekstu). To czasami wygląda źle.

Jak mogę uniknąć używania (drukowania) tego miejsca?

Przykład (powiedzmy to Red=1i NC=2):

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

Wynik:

1 Note: blabla2.

Oczekiwany wynik:

1Note: blabla2.
MatthewRock
źródło

Odpowiedzi:

4

Powinieneś przyzwyczaić się do używania printf:

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

Gdzie każdy %szamienia zmienną. I -enie jest potrzebne, gdyż printf przyjmuje wartości ukośnik odwrotny \ n \ t, itp w przenośnym sposób.

Pamiętaj, że echo -enie jest przenośny na inne powłoki.

Inne opcje:

Możesz użyć dwóch poleceń, które łączą ich dane wyjściowe:

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

Możesz użyć prostej konkatenacji ciągów:

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

Lub możesz użyć, { }aby uniknąć pomyłek w nazwach i tekstach:

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

źródło